Ларавел получает только модели, где все отношения имеют определенную ценностьPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Ларавел получает только модели, где все отношения имеют определенную ценность

Сообщение Anonymous »

У меня есть особая необходимость получить только модели, в которых все связанные модели имеют определенное значение .
Например, у меня есть модель, называемая пользователем и user имеет отношения Hasmy на модели с именем job .
Допустим, что модель задания имеет столбец под названием «Статус , который может быть одним из следующих Enums < /p> Я хочу иметь возможность написать сферу сферы на модели пользователя с именем scopeifpinited () . Цель сферы - отфильтровать пользователей, где Каждый их работы Отношения - либо JobStatus :: checken , либо JobStatus :: Планируемое и они есть 0 jobstatus :: open или jobstatus :: in_progress . Если у них есть какие -либо открытые/в процессе, они не закончены.

Код: Выделить всё

/**
* Is finished. Every single one of the users jobs are closed, they have 0 open jobs.
*
* @param Builder $query
* @return Builder
*/
public function scopeIsFinished(Builder $query): Builder
{
return $query->whereOnlyHas('jobs', function($sub){
$sub->whereIn('status', [JobStatus::CLOSED, JobStatus::SCHEDULED]);
});
}
< /code>
Кто -нибудь знает, возможно ли это, или приятный чистый простой способ, которым я могу достичь? 
, закрытые джобы , preduledjobs и т. Д., И заставляйте область полагаться на то, где () и wheredoesnthave () .
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/794 ... ific-value
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»