Как можно использовать несколько блоков "with" в Laravel?

Как изменить функцию так, чтобы помимо данных из модели Movie она также возвращала данные из модели Tv?
  • 25 марта 2024 г. 14:19
Ответы на вопрос 2
Для использования нескольких блоков "with" в Laravel, можно просто добавить еще один вызов метода "with()" к запросу Eloquent. Например:

```php
$movies = Movie::with('actors')->with('genre')->get();
```

Чтобы изменить функцию так, чтобы она возвращала данные из моделей Movie и Tv, можно использовать метод "with()" с именами обоих связанных моделей. Например:

```php
public function getMoviesAndTv()
{
    $moviesAndTv = Movie::with('actors')->with('genre')
                        ->union(Tv::with('cast')->with('showType'))
                        ->get();

    return $moviesAndTv;
}
```

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

with(['table1:column1,column2,column3' , 'table2:column1,column2,column3'])


То есть если для with & withCount тебе надо 2 и более связи без уточнения запроса, то просто их перечисляешь в массиве без ключей. Если же нужно уточнять запрос, то ключом идет имя связи, а значение запрос.
Похожие вопросы