Скажем, у меня есть модель, которая трансформирует несколько различных моделей (используя morphTo). Я пытаюсь добиться того, чтобы всякий раз, когда модель трансформировалась, все (или некоторые) отношения в этой трансформированной модели тоже загружались.
Пример кода здесь: http://laravel.io/bin/yLyz7
Когда бы я ни позвонил:
Index::with('item')->get();
В конечном итоге это приведет к запросу примерно так же для морфа:
SELECT * FROM sample_items WHERE id IN (?, ?, ?)
Это именно то, что я хочу, но я также хочу загружать любые отношения в моделях SampleItem, чтобы вместо того, чтобы каждый раз запрашивать отношение для каждого SampleItem, он также создавал бы такой запрос. Предполагая, что SampleItem имеет отношение «пользователь».
SELECT * FROM users WHERE id IN (?, ?, ?)
Есть ли способ добиться этого? Поскольку я сам не вызываю модель SampleItem, я не могу указать никаких загруженных отношений. Я предполагаю, что мне нужно будет указать это в отношении индекса, но я не могу понять, как. Я не уверен, что это даже возможно в настоящее время.
Оказывается проще, чем я думал.
Похоже, что указание свойства with в модели SampleItem позаботится об этом:
/**
* The relations to eager load on every query.
*
* @var array
*/
protected $with = ['user'];
Других решений пока нет …