我試圖在這個問題上得到幫助,但我認爲人們要麼誤解我的問題,要麼不太明白我想要實現的東西,用Eloquent/Laravel。Laravel通過關係尋找
每個用戶都有很多類別。每個類別都有很多文章。 我想從用戶擁有的一組類別中檢索所有文章。
所以說用戶有1類,2類,我想要從1類和第2
對於以下這些belongsToMany關係的所有文章,我有自己的數據透視表。
article_categories
id | articleID | 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,但根據我的情況,它不適用於多對多的關係。
目前(作爲一種「解決」)我一直在使用這個。我已經拉起了用戶的類別列表,並通過所有ID的搜索和拉動相關文章和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;
從它形成一個集合但是我不認爲這將很好地擴展增加數據(它已經產生超過1k的查詢,只有1000篇文章,需要8秒才能加載)。
任何想法?
只是想知道你爲什麼要做自我::發現?而不是注入用戶模型的實例? –