Так что у меня возникли проблемы с выяснением того, как сделать вызов mysql в стиле фида, и я не знаю, является ли его красноречивая проблема или проблема mysql. Я уверен, что это возможно в обоих случаях, и мне просто нужна помощь.Laravel Eloquent Join vs Inner Join?
Итак, у меня есть пользователь, и они идут на свою страницу, на этой странице он показывает материал своим друзьям (друзьям, друзьям, друзьям, друзьям). Так что скажите, что у меня есть Том, Тим и Тейлор, как мои друзья, и мне нужно получить все свои голоса, комментарии, обновления статуса. Как мне это сделать? У меня есть список всех друзей по идентификационному номеру, и у меня есть таблицы для каждого из событий (голосов, комментариев, обновлений статуса), в которых у меня есть идентификатор, чтобы связать его с пользователем. Итак, как я могу получить всю эту информацию сразу, чтобы я мог отображать ее в фиде в форме.
Тим прокомментировал: "Классный"
Taylor Said "Woot обновление первого состояния ~!"
Тейлор Проголосовали на «конкурсе Лучший когда-либо»
Edit @damiani Таким образом, после делать изменения модели у меня есть код, как это, и это делает возвращать правильные строки
$friends_votes = $user->friends()->join('votes', 'votes.userId', '=', 'friend.friendId')->orderBy('created_at', 'DESC')->get(['votes.*']);
$friends_comments = $user->friends()->join('comments', 'comments.userId', '=', 'friend.friendId')->orderBy('created_at', 'DESC')->get(['comments.*']);
$friends_status = $user->friends()->join('status', 'status.userId', '=', 'friend.friendId')->orderBy('created_at', 'DESC')->get(['status.*']);
Но я хотел бы все это происходит сразу, потому что mysql, сортируя тысячи записей в порядке, в 100 раз быстрее, чем php, беру 3 списка, объединяя их и затем делая это. Есть идеи?
Как вы храните этот «список всех друзей по идентификационному номеру» .... это в таблице 'друзей', или это список, разделенный запятой, в столбце таблицы' users'? Если последний, то нормализуйте свою базу данных, чтобы затем использовать отношения модели (hasManyThrough()) –
Вы можете создать представление в своем db и яркую «модель» для него. Затем просто получите все нужные вам события. В противном случае вы могли бы использовать «полиморфные» отношения: laravel.com/docs/eloquent#polymorphic-relations –
, пожалуйста, не добавляйте правильный ответ на исходный вопрос, он становится все размытым, а затем – challet