У меня проблемы с красноречивым запросом.
Пользователи имеют много фидов и фидов, которые имеют много предметов.
Мне нужно получить все элементы, относящиеся к фидам пользовательского порядка по дате.
У меня сводная таблица:
feed_user
----------
- id
- feed_id
- user_id
и отношения определяются как это в моих моделях:
class UsersController extends BaseController {
public function feeds() {
return $this->hasMany('feed');
}
class Feed extends \Eloquent {
protected $fillable = [];
public function users() {
return $this->belongsToMany('User');
}
public function items() {
return $this->hasMany('Item');
}
class Item extends \Eloquent {
protected $fillable = [];
public function feed() {
return $this->belongsTo('Feed');
}
Но когда я делаю этот запрос ...
Auth::user()->feeds->items->orderBy('date', 'DESC')->get();
Он возвращает эту ошибку:
Cannot access protected property Illuminate\Database\Eloquent\Collection::$items
Большое спасибо! Мне удалось вернуть объект со всеми элементами фида: $ feeds = Auth :: user() -> feeds; \t \t $ contents = new ArrayObject; \t \t Еогеаспа ($ каналов в $ корма) { \t \t \t $ пунктов = Пункт :: где ('FEED_ID', $ запитка> идентификатора) -> с ('' поток) -> OrderBy ('датой', 'DESC') -> получить(); \t \t \t Еогеасп ($ детали как $ п) { \t \t \t \t $ содержание [] = $ элемент; \t \t \t} \t \t} Но я не знаю, как сортировать результаты по дате. Может, мне нужно задать другой вопрос? – vali2009
@ vali2009 Есть несколько простых способов сделать то, что вы пытаетесь сделать здесь.Думаю, вам лучше задать новый вопрос. Однако одна конкретная заметка: нет необходимости запрашивать такой элемент. Внутри вашего foreach '$ feed' является моделью Feed, поэтому вы можете получить доступ к своим элементам через' $ feed-> items'. – patricus
Ну, еще раз большое спасибо за вашу помощь, Laravel и ориентированное кодирование объектов для меня нова, поэтому я не думаю об этом «ярлыках». Я задам новый вопрос, потому что я уже пытался отсортировать объект моего большого предмета без успеха. Это немного сложно. – vali2009