在我的yii2应用程序中,我需要这样的东西:
SELECT * FROM customers WHERE first_name||' '||last_name ILIKE '%Nick%' ORDER BY "id";
此查询为客户提供了concatinated first_name和last_name,例如' Nick'。
在我的yii1应用程序中,我可以使用CDBCriteria下一步:
$criteria = new CDbCriteria;
$criteria->addSearchCondition(
"first_name||' '||last_name",
'Nick',
true,
'and',
'ILIKE'
);
$criteria->order = 't.id asc';
这很好用。
在yii2中我尝试过:
$a = \common\models\Customer::find()
->filterWhere(['ILIKE', "first_name||' '||last_name", 'Nick'])
->orderBy(['id' => SORT_ASC])
->all();
并且异常列不存在,而sql是:
SELECT * FROM "customers" WHERE "first_name||' '||last_name" ILIKE '%Nick%' ORDER BY "id"
使用\ yii \ db \ Expression不会改变情况。
答案 0 :(得分:0)
这是实现这一目标的众多方法之一:
$customers = \common\models\Customer::find()
->select('*')
->where(['like','concat(first_name,\' \', last_name)','Nick N'])
->orderBy(['id' => SORT_ASC])
->all();
答案 1 :(得分:0)
让它持续一段时间:
\common\models\Customer::find()
->where("first_name||' '||last_name ilike '%'||:query||'%'", [':query' => $name])
->orderBy(['id' => SORT_ASC])
->all()