На моем сайте я разрешаю пользователям загружать изображения/изображения/любимые изображения/и т. Д.orderBy атрибуты другой таблицы в Laravel
Таким образом, у меня есть таблица для изображений, любит, закладки и т.д.
я могу получить и отобразить эти изображения просто отлично, и сортировать их, как мне нравится
$images = Images::orderBy('id', 'desc')->Paginate(50);
я могу также отображать, насколько понравилось/избранное изображение.
$favCount = Favorite::where('image_id', $image->id)->count();
Однако, что бы я сделал, чтобы отсортировать изображения, скажем, сколько их у них есть? У меня есть любимая модель и модель изображения, но я не уверен, как бы я это сделал.
EDIT:
Текущий запрос для ответа, данного:
$images = Images::join('favorites', 'favorites.image_id', '=', 'images.id')
->select('images.link', DB::raw('count(favorites.id) as favs'))
->orderBy('favs', 'desc')
->groupBy('images.link')
->take(10)
->get();
и ошибка:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'images' in 'field list' (SQL: select
images
, count(favorites.id) as favs fromimages
inner joinfavorites
onfavorites
.image_id
=images
.id
group byimages
.link
order byfavs
desc limit 10)
Вы попробовали это с помощью 'DB', как я? Я думаю, что ошибка исходит из 'Images :: raw()'. Попробуйте заменить 'Images :: raw' на' DB :: raw() '. Или сделайте весь запрос с 'DB', как я. И посмотрите результаты. Пожалуйста. – EddyTheDove
Ах, ты был прав. Извините, это мой первый раз с использованием сырых выражений. Тем не менее, есть ошибка. Новый запрос и ошибка будут в главном сообщении. Спасибо, что помогли мне! –
В вашей таблице 'images', если у вас есть свойство' link' или 'name'. Попробуйте 'select ('link', DB :: raw ('count (favorites.id) как favs'))'. Кажется, у вас нет свойств 'images' в вашей таблице' images'. Можете ли вы попробовать все с помощью «БД», как я это сделал, и посмотреть, работает ли это? – EddyTheDove