【发布时间】:2017-06-07 10:34:33
【问题描述】:
在我的网站上,我允许用户上传图片/喜欢的图片/喜欢的图片/等等。
因此,我有一张用于存放图片、喜欢、收藏等的表格。
我可以很好地获取和显示这些图像,并按我喜欢的方式对它们进行排序
$images = Images::orderBy('id', 'desc')->Paginate(50);
我还可以显示一张图片有多少喜欢/收藏。
$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();
错误是:
SQLSTATE[42S22]:未找到列:1054 '字段列表'中的未知列'图像'(SQL:选择
images,计数(favorites.id)作为来自images的收藏夹@内连接favorites@ 987654327@.image_id=images.idgroup byimages.linkorder byfavsdesc limit 10)
【问题讨论】:
-
您是否像我一样使用
DB尝试过?我认为错误来自Images::raw()。尝试将Images::raw替换为DB::raw()。或者像我一样使用DB进行所有查询。并查看结果。请。 -
啊,你是对的。抱歉,这是我第一次使用原始表达式。不过还是报错。新的查询和错误将在主帖中。不过,感谢您帮助我!
-
如果您有属性
link或name,则在您的表中images。试试select('link', DB::raw('count(favorites.id) as favs'))。您的表images中似乎没有属性images。你能像我一样用DB试试看它是否有效吗? -
好的,我尝试用 images.title 切换 images.link,我可以在我的 foreach 循环中打印出带有 {{ $image->title }} 的图像标题列表刀片模板,但是我无法打印任何其他属性,例如 {{ $image->description }}。理想情况下,我希望能够获取表格的所有属性。