fud*_*udo 2 has-many relationship has-one eloquent
好吧,我有模型A链接到许多模型B,让模型A有一个hasMany以模型关系B和模型B有一个belongsTo到模型的关系A。
但是,在所有这些中,B有一个特定的,例如具有更高价值的那个,我希望模型A与之建立专门的关系。
我知道我可以在模型A中创建第二个关系,重新使用旧的关系并添加我想要的所有范围和条件,但是由于我正在从 a 构建这个新关系hasMany,它无论如何都会返回一个集合结果。
有没有办法让它返回单个结果而不是集合?我知道我可以添加一个first(),但这涉及将这个新关系用作函数,即始终使用括号,如果可能,我仍希望以雄辩的方式使用它。
有可能这样做吗?如果是,如何?
这个怎么样:
public function Bs()
{
return $this->hasMany(B::class);
}
public function B()
{
$builder = $this->Bs()->latest(); // Add your own conditions etc...
$relation = new HasOne($builder->getQuery(), $this, 'a_id', 'id');
return $relation; // or return $relation->withDefault();
}
Run Code Online (Sandbox Code Playgroud)
更新:
Laravel 8.42 提供了一种新的一对多关系。您可能想改用它:
public function B(): HasOne
{
return $this->hasOne(B::class)->latestOfMany();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
873 次 |
| 最近记录: |