gpt4 book ai didi

php - Laravel Eloquent 加入奇怪的查询

转载 作者:行者123 更新时间:2023-11-28 23:41:13 25 4
gpt4 key购买 nike

我正在使用 laravel 的 eloquent 来查询数据库中的多个表。以下查询正在运行。但是,我想向查询添加一些内容,以根据 Job 表列 archived 的值是否设置为来过滤掉 milestones 01

$app->get('/dashboard/user', function() {
global $app;

$milestones = Milestone::where('user_id', '=', $app->user->user_id)
->where('completed_flag', '=', '0')
->with('job.businessUnit')
->with('user')
->orderBy('deadline', 'asc')
->get();

$milestones = $milestones->sort(function($a, $b) {
$a0 = ($a->milestone_id == $a->job->next_incomplete_milestone_id);
$b0 = ($b->milestone_id == $b->job->next_incomplete_milestone_id);
return ( ($a0 == $b0) ? strcmp($a->deadline, $b->deadline) :
(($a0 == true) ? -1 : 1));
});
print json_encode(array(
'user' => $app->user->toArray(),
'milestones' => $milestones->toArray()
));
});

我一直在尝试按照以下各项做一些事情:

    ->join('jobs','jobs.archived','=','0')
//
->where('archived','=','0')
//
->with('jobs.archived')
//
->with('jobs')
//
->where('jobs.archived', '=', '0')

最佳答案

您正在寻找的是 whereHas方法。

例如:

$milestones = Milestone::whereHas('job', function($query) {
$query->where('archived','=','0');
})
... // took out rest of code for brevity
->get();

whereHas 示例将仅检索归档值为 0 的作业的 Milestone。

关于@Tezla 上面提到的评论,我不认为限制急切加载是您想要的,因为它仍然会让您获得不符合要求的里程碑。相反,它只会为关系返回一个空的 Job 集合。

关于php - Laravel Eloquent 加入奇怪的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34323945/

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