我试图在这个问题上得到帮助,但我认为人们要么误解我的问题,要么不太明白我想要实现的东西,用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秒才能加载)。
任何想法?
只是想知道你为什么要做自我::发现?而不是注入用户模型的实例? –