Связь с параметром затем используется в Eloquent Laravel - PullRequest
0 голосов
/ 05 января 2020

Правильно работает следующий код:

$system_breeds = SystemsGroup::find($group_id)->breeds;

$breeds = Breed::select('id', 'breed')->orderBy('breed')->get()->transform(function ($breed) use ($system_breeds) {
    if ($system_breeds->contains($breed)) {
        $breed->active = true;
    }
    return $breed;
});

Для каждой породы, которая существует в system_breeds, я добавляю активное свойство как true.

Что я хочу сделать сейчас, выглядит примерно так:

$system_breeds = SystemsGroup::where('id',$group_id)->with(['breeds' => function($q) use ($section_id){
   $q->where('group_section_id', $section_id);
}])->get();

Итак, добавьте фильтр where для отношений. Но «содержит» не работает.

Ответы [ 2 ]

2 голосов
/ 05 января 2020

Ваш вопрос не очень понятен, посмотрите, хотите ли вы отфильтровать и получить связанные модели, если так, попробуйте вот так.

$system_breeds = SystemsGroup::find($group_id)->breeds()->where('group_section_id',$section_id)->get();
0 голосов
/ 05 января 2020

Я думаю, $ system_breeds - это массив. Попробуйте преобразовать его в коллекцию, используя

collect($system_breeds)

Как только он станет экземпляром класса Collection, должен работать метод «contains».

...