Laravel 5.2 orderBy与ofCount的关系导致SQL错误,因为尝试获取列而不是计数失败
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel 5.2 orderBy与ofCount的关系导致SQL错误,因为尝试获取列而不是计数失败相关的知识,希望对你有一定的参考价值。
目标是通过我的过滤中的视图对我的广告系列进行排序,这就是为什么我有一个与我的广告系列有关系的分析表
我的广告系列模型(数据库名称为“广告”):
public function views() {
return $this->hasMany('AppAnalytic', 'foreign_id', 'id')->where('foreign_type', '=', 'campaign');
}
我过滤的控制器:
$query = Ad::withCount('views')->with('tags');
$query->where("is_active", "=", 1);
$query->where("status", "=", 1);
$query->orderBy('views_count', 'DESC');
$campaigns = $query->get();
现在不在没有$ query->部分的情况下编写它的原因是因为查询有很多if语句,具体取决于过滤设置。
我得到的错误:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'views_count' in 'order clause' (SQL: select count(*) as aggregate from `ads` where `is_active` = 1 and `status` = 1 and `from_year` >= 7 and `to_year` <= 88 and `price` >= 1000 and `price` <= 64000 order by `views_count` desc)
错误是它尝试获取列,但我无法弄清楚原因。如果我尝试在我的刀片模板中访问qazxsw poi,它会显示计数就好了。
谢谢你的时间,我希望有人能告诉我这里我做错了什么。
答案
你得到的错误是count()方法而不是get()的结果。这样的事情
$campaign->views_count
用以下代码替换复杂的选择部分:
$query = Ad::withCount('views')->with('tags');
$query->where("is_active", "=", 1);
$query->where("status", "=", 1);
$query->orderBy('views_count', 'DESC');
$campaignCount = $query->count();
如果你需要count()和get(),就这样做:
select count(*) as aggregate
以上是关于Laravel 5.2 orderBy与ofCount的关系导致SQL错误,因为尝试获取列而不是计数失败的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.2 API 与 Lumen 相比如何? [复制]