各記事は多くのカテゴリに属しています。各ユーザーには多くのカテゴリがあります。 ユーザーのカテゴリを持つすべての記事を取得したいと考えています。以下の関係のそれぞれについて、私は自分のピボットテーブルを持っています。関係HasManyThroughと多対多の関係
記事_cat
id |記事ID | categoryId
users_cats
id | user_details_id | categories_id
リレーションシップ。
Articles.php
public function categories()
{
return $this->belongsToMany('App\Categories', 'article_categories', 'articleID', 'categoryID');
}
UserDetails.php
public function Categories(){
return $this->belongsToMany('App\Categories', 'users_cats', 'user_details_id', 'categories_id');
}
Categories.php
public function articles(){
return $this->belongsToMany('App\Article', 'article_categories', 'categoryID', 'articleID');
}
public function UserDetails(){
return $this->HasMany('App\UserDetails', 'users_cats', 'user_details_id', 'categories_id');
}
私が試してみましたHasManyを使用することができますが、それは私が知る限り、多対多の関係では機能しません。
現在、(「回避」の一種として)これを使用しています。アイブ氏は、ユーザーのカテゴリのリストをプルアップし、私はそれが増加データとよくスケーリングするとは思わないが、IDSのすべてを検索し、関連する記事を引っ張り、UserDetails.php
$user = self::find($this->id);
$user = $user->Categories;
foreach ($user as $item) {
foreach ($item->articles as $article)
$article1[] = Article::find($article->id);
}
$articles = collect($article1)->sortByDesc('date')->unique();
return $articles;
でそれからコレクションを形成します(すでに1,000件以上の記事を1k以上のクエリで作成しており、ロードに8秒以上かかる)。
アイデア?
これ以上のサポートはありますか?以下の答えは役に立たなかった – user5067291