每篇文章屬於很多類別。每個用戶都有很多類別。 我想檢索具有用戶類別的所有文章。對於以下每種關係,我都有自己的數據透視表。關係有多對多關係
article_cat
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');
}
我曾嘗試使用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秒鐘才能加載)。
任何想法?
任何這進一步幫助?下面的答案沒有幫助 – user5067291