2014-12-30 5 views
1

Когда имеющий Красноречивый отношение, вы получите соотношение, как:Laravel Eloquent порядок отношений

$page->photos->toArray();.

Но я хочу, чтобы отношение было заказано. Как?

$page->photos->orderBy('order')->toArray(); теперь работает: Call to undefined method Illuminate\Database\Eloquent\Collection::orderBy()

+0

Вы можете улучшить свой код контроллера в вашем вопросе? –

ответ

3

Вы можете использовать возвращаемое отношение как объект-строитель из вашего метода отношений.

$page->photos()->orderBy('order')->get(); 

$page->photos() возвращает объект типа отношения и $page->photos является динамическим свойством, который загружает отношения и возвращает результат. В этом случае Eloquent\Collection.

Docs - Eloquent - Dynamic Properties

Вы также можете заказать эти отношения в то время как жадная загрузка, если это необходимо.

Eager Loading Constraints (есть пример, который использует OrderBy в документации)

3

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

$page->photos()->orderBy('order')->get()->toArray(); 
Смежные вопросы