У меня есть Красноречивый BfsImages модель, определенная следующее соотношение:Eloquent отношение вызывает модельные гнездящееся
public function listing()
{
return $this->belongsTo('App\CommercialPeople\Models\BfsListings', 'bfs_listing_id', 'bfs_listing_id');
}
и атрибут приложенное:
public function getPathAttribute()
{
return config('settings.bfs_image_path') . $this->listing->auth_agent_id . '/' . $this->filename;
}
Как вы можете видеть атрибут относится к родительской модели, поэтому, когда я вызываю следующее:
BfsListings::with('images')->all();
Хотя технически отношения от изображений до записей не вызывается из-за этой ссылки в пользовательском атрибуте. Модель BfsListing добавляется к изображениям, которые приводят к вложенности модели, поэтому я получаю BfsListing-> BfsImages-> BfsListing.
Вопрос в том, есть ли способ ссылаться на родительскую модель без фактического добавления ее и возврата ее данных? Или ... возможно, есть лучший способ передать переменную от родителя к ребенку, чтобы его можно было использовать, не возвращая отношения снова?
Чтобы быть честным, поскольку все мои модели кэшированы, мне все равно, что много запросов взад и вперед, я просто хочу удалить ненужные данные из модели изображений, однако я мог бы использовать некоторые умные способы обойти это, чтобы не дублируйте запрос.
Редактировать
его можно сослаться на другие модели без использования отношений, как это:
$this->listing()->setEagerLoads([])->first()->auth_agent_id;
Однако это все еще означает, что ссылка на родительскую модель будет производиться один раз, что опять-таки вызывает два уровня вложенности (так что основная проблема не решена, но в некоторых случаях это поможет избежать бесконечных циклов).
Я до сих пор не могу понять, как вызвать родительскую модель, не загружая ее снова.
И как именно это будет работать? Я загружаю модель следующим образом: '$ bfs = BfsListings :: с ('images') -> find ($ id); $ Bfs-> setAppends ([ 'listed_date']); return $ bfs; ' – peterstarling