gpt4 book ai didi

laravel - 在 Laravel 查询范围内查询相关模型

转载 作者:行者123 更新时间:2023-12-02 09:51:16 25 4
gpt4 key购买 nike

我有一个查询范围方法,可以由模型作者过滤 Foo 模型上的结果。复杂的是作者没有直接关系。

Foo 属于 Bar,Bar 属于 User。如果 Foo 属于 User,我可以这样做:

public function scopeAuthorOnly($query, User $user)
{
return $query->whereuser_id($user->id);
}

这显然行不通,因为 Foo 模型没有 user_id 列,而是有 bar_id 列。但是我不确定如何以过滤 user_id 的方式构建查询。

有什么指点吗?

最佳答案

您可以在范围中使用 whereHas() 来查询关系。

假设您在此模型中有一个 users() 关系函数。那么它会是这样的:

public function scopeAuthorOnly($query, User $user)
{
return $query->whereHas('users', function($q) use($user){
$q->where('id', $user->id);
});
}

更新:您还可以嵌套 whereHas 语句:如果当前 Foo 具有名为 bar 的关系,并且 bar 有一个名为 users 的关系,它是这样的:

public function scopeAuthorOnly($query, User $user)
{
return $query->whereHas('bar', function($q) use($user){
return $q->whereHas('users', function($q2) use($user){
$q2->where('id', $user->id);
});
});
}

更多信息:here

关于laravel - 在 Laravel 查询范围内查询相关模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18521178/

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