Я использую красноречие laravel для запроса нескольких таблиц в базе данных. Выполняется следующий запрос. Однако я хочу добавить что-то к запросу, который будет отфильтровывать milestones
в зависимости от того, установлено ли значение Job
столбец таблицы archived
равным 0
или 1
.Laravel Eloquent Joining Strange query
$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')
Если вы собираетесь фильтровать эту часть, '-> с ('job.businessUnit')'. вы можете использовать ограничение [eagerLoad] (http://laravel.com/docs/5.1/eloquent-relationships#constraining-eager-loads). –