我有一个名为TPurchasing的表,其中包含有关商店购买记录的数据。
TPurchasing
通过在yii2中使用gii功能,我设法从“CRUD Generator”菜单中生成一个名为TPurchasingSearch的模型。在TPurchasingSearch中,有一个名为search()的函数,由GridView在视图文件中使用。
public function search($params)
{
$query = TPurchasing::find();
$dataProvider = new ActiveDataProvider([
'pagination' => ['pageSize' => 20],
'query' => $query,
'sort' => ['defaultOrder' => ['transaction_time' => SORT_DESC]]
]);
$this->load($params);
if (!$this->validate()) {
$query->where('0=1');
return $dataProvider;
}
$query->andFilterWhere(['is_removed' => 0]);
$query->andFilterWhere(['like', 'supplier_name', $this->supplier_name])
->andFilterWhere(['like', 'payment_type', $this->payment_type])
->andFilterWhere(['>', 'total', 'paid']);
return $dataProvider;
}
现在我正在尝试显示仍未完全支付的记录,这意味着“付费”列小于“总计”列。如何在搜索功能中进行此比较?上面的代码给了我一个错误:
invalid input syntax for type double precision: "paid"
就此而言
->andFilterWhere(['>', 'total', 'paid']);
因为它试图将总列与字符串“pay”进行比较。我可能会错过它,但我似乎无法在Yii2文档中找到相关的答案。
答案 0 :(得分:2)
此处无需使用 $query->andWhere('total > paid');
,您只需尝试:
arrays