Как вытащить модели связанные с софт-удаленной моделью? В документации вроде ничего похожего не нашел, но почитывая форумы понимаю, что там много неявных моментов.
Есть модель Song, которая связана с моделью Playlist, а она с Artist, но это уже не важно.
Я могу сделать так Playlist::find(1)->songs и получить песни привязанные к тому плейлисту, но дошел до этапа удаления плейлиста и тут возникла проблема. Плейлист-то я софт-удалил, но песни не надо удалять, значит они остаются с привязкой к плейлисту, который удалили.
Вопрос:
Можно ли как-то вытащить все песни связанные с удаленными плейлистами, используя eloquent, а не sql?
Семантически, что-то типа этого Playlist::onlyTrashed()->songs
Спасибо.Пока единственное решение$songs=Song::join('playlists', 'songs.playlist_id','=','playlists.id')
->where('playlists.deleted_at','!=','null')
->orderBy('songs.playlist_id','asc')
->orderBy('songs.position','asc')
->get();

21 Авг 2019 в 07:01
136 +1
0
Ответы
1

Да, вы можете использовать Eloquent для извлечения песен, связанных с удаленными плейлистами. Однако в Laravel нет встроенного метода для этого. Вам придется использовать метод join и условия where для объединения таблиц и фильтрации результатов.

Пример вашего решения выглядит вполне разумно. Вы можете продолжить использовать подобные запросы для достижения нужного результата. Также, вы можете использовать метод withTrashed для включения удаленных записей, если вы используете Soft Deleting.

Например, вы можете изменить ваш запрос следующим образом:

$songs = Song::join('playlists', 'songs.playlist_id','=','playlists.id')
->whereNotNull('playlists.deleted_at')
->orderBy('songs.playlist_id','asc')
->orderBy('songs.position','asc')
->get();

Этот запрос должен извлечь все песни, связанные с удаленными плейлистами. Не забудьте проверить и протестировать результаты вашего запроса для убедительности.

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 96 005 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир