laravel 雄辩的关系与基于外栏的子句和何处子句

2022-08-30 12:48:49

嗨,我想检索我保存在数据库中的数据库,该数据库由身份验证拥有,该身份验证还创建(他们有许多项目和任务)和(属于项目和任务和用户)。projectsuserclientstasks

我想检索状态表中未标记为已关闭的所有任务,我知道它的ID是2,我可以这样检索:

public function getOpenProjects() {

    return \Project::with(['clients', 'tasks', 'status'])
        ->where('status_id', '!=', '2')
        ->whereUserId(Auth::user()->id)
        ->get();
}

但是,如何将其更改为针对状态表中的列(即该表中的名称列)进行查询?


答案 1

你可以试试这个:

$value = 'someName';
Project::with(['clients', 'tasks', 'status' => function($q) use($value) {
    // Query the name field in status table
    $q->where('name', '=', $value); // '=' is optional
}])
->where('status_id', '!=', '2')
->whereUserId(Auth::user()->id)
->get();

您也可以尝试此操作(仅当您想要返回时才会获取记录,否则没有):queryname

$value = 'someName';
Project::with(['clients', 'tasks', 'status'])
       ->whereHas('status', function($q) use($value) {
       // Query the name field in status table
       $q->where('name', '=', $value); // '=' is optional
})
->where('status_id', '!=', '2')
->whereUserId(Auth::user()->id)
->get();

答案 2

你可以试试这个:

Project::with(['clients', 'tasks' => function($q) use($value) {
// Query the name field in status table
    $q->where('status_id', '!=', '2'); 
}])
->whereUserId(Auth::user()->id)
->get();

推荐