我有一个post
,group
,user
和group_user
表。帖子表具有user_id
和group_id
外键,而group_user
也具有user_id
和group_id
外键。
在后关系中,我想要group_user
和post
相同的user_id
的{{1}}详细信息。但是我找不到更好的方法。有没有一种方法可以在关系表中放置两个条件?
答案 0 :(得分:0)
在尝试与laravel hasonethrough
关系时,我添加了以下方法。但这行不通。我还需要user_id
的第二个条件。
在上课时
public function groupUser()
{
return $this->hasManyThrough( 'App\Models\User','App\Models\GroupUser','group_id','id','group_id','user_id')->select('group_user.*');
}
如果该组中有更多用户,则显示多个用户。我只需要创建帖子的用户。
我故意保留hasManyThrough
以检查仅出现一个结果。
答案 1 :(得分:0)
最后,我创建了一个自定义类并覆盖addEagerConstraints方法。有效。谢谢
public function addEagerConstraints(array $models)
{
$whereIn = $this->whereInMethod($this->farParent, $this->localKey);
$this->query->{$whereIn}(
$this->getQualifiedFirstKeyName(), $this->getKeys($models, $this->localKey)
);
$this->query->{$whereIn}(
$this->getQualifiedFarKeyName(), $this->getKeys($models, $this->secondLocalKey)
);
}