私はこの質問について助けを得ようとしましたが、私の質問を誤解しているとか、Eloquent/Laravelを使って達成しようとしていることを理解できていないと思います。Laravelが関係を検索する
各ユーザーには多くのカテゴリがあります。各カテゴリには多くの記事があります。 私は、ユーザーが持つ一連のカテゴリからすべての記事を取得したいと考えています。
だからユーザーはカテゴリー1、カテゴリー2を持っていると言う、私は以下これらbelongsToMany関係のそれぞれについて、カテゴリー1、カテゴリー2
からすべての記事を検索したい、私は自分のピボットテーブルを持っています。
article_categories
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');
}
私は肝炎eはHasManyを使用しようとしましたが、私が知る限り、多対多の関係では機能しません。
現在、(「回避」の一種として)私はこれを使用しています。私はそれがでうまくスケールとは思わないしかし、私は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;
をユーザーのカテゴリのリストを引き上げ、IDSのすべてを検索し、関連する記事を引っ張って、それからコレクションを形成してきましたデータが増加しています(既に1000件の記事で1,000件以上のクエリを生成しており、ロードに8秒以上かかる)。
アイデア?
あなたはなぜself :: findをやっているのでしょうか? Userモデルのインスタンスをインジェクトする代わりに? –