猿问

Laravel 检查查询生成器中 hasMany 关系中一个特定记录的值

我正在尝试向我的查询构建器添加一些条件逻辑,但正在努力找到我需要寻找的正确函数......

以这个例子为例;我们有模型 A,其中有许多模型 B。Model B包含namevalue列。我现在想返回所有具有名称为“score”和的模型 B 的模型 As,以及value > 50另一个名称为“组”且值为“调试”的模型 B。

PHP一旦模型全部返回,我将如何在查询构建器中按特定的 hasMany 关系进行过滤,而无需求助于基本模型?

提前谢谢了。


慕容3067478
浏览 251回答 1
1回答

慕码人8056858

使用雄辩:关系:在模型中A:public function b(){   return $this->hasMany(B::class);}A::whereHas('b', function($b) {   $b->where(function($query) {       $query->whereName('score')             ->where('value', '>', 50);       })    ->orWhere(function($query) {        $query->whereName('group')              ->where('value', 'debug');     });  })->get();使用查询构建器:\DB::table('a')->join('b', function ($join) {            $join->on('a.id', '=', 'b.a_id');        })->where(function ($q) {            $q->where('b.name', 'score')                ->where('b.value', '>', 50);        })->orWhere(function ($q) {            $q->where('b.name', 'group')                ->where('b.value', 'debug');        })        ->get();
随时随地看视频慕课网APP
我要回答