gpt4 book ai didi

eloquent - 将 Eloquent HasMany 关系转换为 HasOne?

转载 作者:行者123 更新时间:2023-12-04 16:28:30 26 4
gpt4 key购买 nike

好的,我有型号 A链接到许多模型 B , 所以型号 A有一个 hasMany与模型的关系 B和型号B有一个 belongsTo与模型的关系 A .

但是,在所有这些中B有一个特定的,例如具有较高值的​​那个,我想要模型 A建立专门的关系。

我知道我可以在模型中创建第二个关系 A重新使用旧的并添加我想要的所有范围和条件,但是因为我正在从 hasMany 建立这个新关系,不管怎样,它总会返回一个结果的集合。

有没有办法让它返回单个结果而不是集合?我知道我可以添加 first() ,但这涉及将这种新关系用作函数,即始终使用括号,如果可能,我仍希望以 Eloquent 方式使用它。

有可能这样做吗?如果是,如何?

最佳答案

这个怎么样:

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();
}
更新:
Laravel 8.42 提供了一种新的一对多关系。您可能想改用它:
public function B(): HasOne
{
return $this->hasOne(B::class)->latestOfMany();
}

关于eloquent - 将 Eloquent HasMany 关系转换为 HasOne?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57807000/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com