【发布时间】:2019-01-27 20:12:05
【问题描述】:
我有三个表,一个用户表、一个文档表和一个收藏夹表。这个想法是用户可以收藏文档,但我无法理解使用 Eloquent 查询该文档的最佳方式。
User.php
class User extends Authenticatable
{
public function documents()
{
return $this->hasMany('App\Document');
}
public function favourites()
{
return $this->hasMany('App\Favourite');
}
}
Document.php
class Document extends Model
{
public function user()
{
return $this->belongsTo('App\User');
}
}
Favorite.php
class Favourite extends Model
{
public function user()
{
return $this->belongsTo('App\User');
}
public function document()
{
return $this->belongsTo('App\Document');
}
}
收藏表是一个简单的 2 列表,其中 user_id 和 document_id 将每个用户链接到他们收藏的文章。
现在我可以使用一种方法来获取用户喜欢的文章,如下所示:
App\User::with('favourites')->find(1);
问题是当我想要文档表中的数据(例如文档的标题和 ID)时,这会从收藏夹表中带回两个 ID。
看起来我可能需要“有很多通过”关系来实现这个查询,但我不确定如何在这个用例中实现它,或者即使“有很多通过”关系这样做的正确方法是什么?
【问题讨论】:
-
请对答案提供反馈。
-
@JonasStaudenmeir 我还没有实施这个项目,因为截止日期已被推迟,它们看起来都是有效的选项,所以对于哪个是最好的实施,这是一个见仁见智的问题。在我尝试了这些选项之前,我不想发表我的个人意见。