【发布时间】:2019-02-22 13:48:30
【问题描述】:
我尝试在我的 Laravel 应用程序中设置查询时遇到了一些问题。 我正在尝试在数据库级别计算某些内容,然后通过 ajax 调用将其返回给用户。
这里是被调用函数的一部分:
$query = \DB::table('db_table');
switch ($request['type']) {
case 'type1':
$settingValue = $request['type1'];
$query = $query->selectRaw('price - cost_price AS margin');
$query = $query->havingRaw('margin < ?', [$settingValue]);
break;
case 'type2':
$settingValue = $request['type2'];
$query = $this->addSelectQuery($query, '((price - cost_price) / price) AS profit');
$query = $query->havingRaw('profit < ?', [$settingValue]);
break;
default:
return false;
}
$filteredProducts = $query->where('id', '=', $id)->count();
我已经尝试过 where、whereRaw 和 have,但我一直收到同样的错误。
Illuminate\Database\QueryException:
SQLSTATE[42703]: Undefined column: 7 ERROR: column "margin" does not exist
(SQL: select count(*) as aggregate from "db_table" where "id" = 21 having margin < 15)
任何帮助将不胜感激。
【问题讨论】:
-
在你的
$query = $query->selectRaw('price - cost_price AS margin')行中,这应该是sum(price - cost_price) AS margin吗? -
不,这应该为每条记录计算,然后查询应该只检索边距低于客户在应用程序其他地方填写的数量的记录数量。
标签: database laravel postgresql laravel-5