Yii2条件与concat

时间:2016-07-01 12:44:51

标签: php yii2

我遇到全名自动填充问题。 我有一个usertable,其中包含firstname,lastname columns。通过ajax。

在搜索操作中,这是我的代码:

$users = (new Query())
                ->select('*')
                ->from($userTable)
                ->where(['like', 'username', $searchTerm])
                ->orWhere(['like', 'firstname', $searchTerm])
                ->orWhere(['like','lastname', $searchTerm])     
                ->andWhere(['<>','id', Yii::$app->user->id])
                ->andWhere(['status'=>self::STATUS_ACTIVE])
                ->orderBy('username')
                ->limit(20)
                ->all(); 

我的问题是当我尝试使用姓氏搜索第一个名称获取空记录时。

感谢您的支持,我通过保持concat解决了

$users = (new Query())
                    ->select('*')
                    ->from($userTable)
                    ->where(['like', 'username', $searchTerm])
                    ->orWhere(['like', "CONCAT(firstname, ' ', lastname)", $searchTerm])
                    ->andWhere(['<>','id', Yii::$app->user->id])
                    ->andWhere(['status'=>self::STATUS_ACTIVE])
                    ->orderBy('username')
                    ->limit(20)
                    ->all(); 

2 个答案:

答案 0 :(得分:0)

以下代码对我使用SQL数据库

工作正常
$query->orWhere(['like', "CONCAT([staff].[first_name], ' ',[staff].[middle_name],' ', [staff].[last_name])", $this->name]);

答案 1 :(得分:-3)

可以用

替换两个orWhere用于firstname和lasta名称
    ->orWhere(" concat('firstname', ' ' ,  'lastname')  like concat('%',:search_term) ")
    ->addParam(':search_term',$searchTerm )