Yii 是的。具有相似条件的查询
在我的yii2应用程序中,我需要如下内容:Yii 是的。具有相似条件的查询,yii,Yii,在我的yii2应用程序中,我需要如下内容: SELECT * FROM customers WHERE first_name||' '||last_name ILIKE '%Nick%' ORDER BY "id"; 此查询获取名和姓(如“Nick”)相关的客户 在我的yii1应用程序中,我可以下一步使用CDBCriteria: $criteria = new CDbCriteria; $criteria->addSearchCondition(
SELECT * FROM customers WHERE first_name||' '||last_name ILIKE '%Nick%' ORDER BY "id";
此查询获取名和姓(如“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();
和Get exception列不存在,sql为:
SELECT * FROM "customers" WHERE "first_name||' '||last_name" ILIKE '%Nick%' ORDER BY "id"
使用\yii\db\Expression不会改变这种情况。这是许多方法之一:
$customers = \common\models\Customer::find()
->select('*')
->where(['like','concat(first_name,\' \', last_name)','Nick N'])
->orderBy(['id' => SORT_ASC])
->all();
暂且不谈:
\common\models\Customer::find()
->where("first_name||' '||last_name ilike '%'||:query||'%'", [':query' => $name])
->orderBy(['id' => SORT_ASC])
->all()
您使用的是哪个数据库?如果客户的名字是“Nick”,姓氏是“Nick”,而查询行是“Nick N”,则为PostgreSql。它不起作用。我不明白您之前的问题。该示例根据您的案例工作。现在,我已编辑了该示例。