在我的网站上,我允许用户上传图片/喜欢的图片/喜欢的图片等等。
因此,我有一张图片,喜欢,收藏等表格。
我可以很好地显示这些图像,然后按照我喜欢的方式对它们进行排序
$favCount = Favorite::where('image_id', $image->id)->count();
我还可以显示图片有多少喜欢/收藏。
$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();
但是,我会怎样对图像进行排序,比方说,它们有多少收藏?我有一个最喜欢的模型和图像模型,但我不确定我会怎么做。
编辑:
给出答案的当前查询:
images
错误是:
SQLSTATE [42S22]:未找到列:1054未知列'图像'在'字段列表' (SQL:选择
images
,将count(favorites.id)作为favorites
favorites
image_id
images
上的id
内的收藏夹。images
=link
。favs
{{1}}分组{{1}}按{{1}} desc限制排序10)
答案 0 :(得分:2)
您的查询应该是。
$images = Images::join('favorites', 'favorites.image_id', '=', 'images.id')
->orderBy('favs', 'desc')
->groupBy('images.link')
->take(10)
->get(['images.link', DB::raw('count(favorites.id) as favs')]);
答案 1 :(得分:1)
您可以像这样使用查询构建器:
$images = DB::table('images')
->join('favorites', 'favorites.image_id', '=', 'images.id')
->select('images.link', DB::raw('count(favourites.id) as favs'))
->orderBy('favs', 'desc') //order in descending order
->groupBy('images.link')
->take(10) //limit the images to Top 10 favorite images.
->get();
同样可以用Eloquent完成。