YIi2 - 比较searchModel

时间:2017-09-05 07:33:41

标签: yii2

我有一个名为TPurchasing的表,其中包含有关商店购买记录的数据。

TPurchasing

  • id |串行
  • transaction_time |没有时区的时间戳
  • 供应商|字符变化(200)
  • 总计|双精度
  • 付费|双精度

通过在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文档中找到相关的答案。

1 个答案:

答案 0 :(得分:2)

此处无需使用 $query->andWhere('total > paid'); ,您只需尝试:

arrays