Красноречивые обратные отношения выполняют бесполезный запросPhp

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

Сообщение Anonymous »

У меня стандартная связь «один-ко-многим» с обратным методом:

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

class Place
{
public function hotels()
{
return $this->hasMany('Hotel');
}
}

class Hotel
{
public function place()
{
return $this->belongsTo('Place');
}
}
Все работает нормально.

В моем контроллере мне нужно показать список отелей каждый в одном поле, поэтому я создал что-то похожее на это:

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

//place.blade
{{ $place->name }}
@foreach($place->hotels as $hotel)
@include('partials.hotels-box', ['hotel' => $hotel])
@endforeach

//partials/hotels-box.blade
[url=route(] $hotel->name, 'place' => $hotel->place->name) }}">
{{ $hotel->name }}
[/url]
@endforeach
Все работает нормально.

НО внутри Hotels-box.blade каждый раз, когда я обращаюсь к модели места внутри $hotel, Eloquent запускает новый запрос (даже если место всегда одно и то же и именно оно запускает @foreach).

Единственные идеи, которые пришли мне в голову, чтобы избежать этих проблем:
  • передать $place в партиалы и использовать его вместо $hotel->place
  • вручную установить $hotel->place в контроллере с помощью цикла
но они мне не нравятся.

Подробнее здесь: https://stackoverflow.com/questions/401 ... less-query
Ответить

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

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

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

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

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