Php 如何在Yii2中调用类似SQL的函数?
调用此SQL语句时接收NULL作为值(该记录存在于MySQL数据库中)。如何在Yii2中使用LIKE函数?谢谢Php 如何在Yii2中调用类似SQL的函数?,php,yii2,Php,Yii2,调用此SQL语句时接收NULL作为值(该记录存在于MySQL数据库中)。如何在Yii2中使用LIKE函数?谢谢 $command = $connection->createCommand("SELECT user_id FROM User WHERE name LIKE '%:_username%'"); $command->bindParam(':_username',$th
$command = $connection->createCommand("SELECT user_id
FROM User
WHERE name LIKE '%:_username%'");
$command->bindParam(':_username',$this->username);
$this->id_user = $command->queryScalar();
$command->execute();
我认为这里的问题在于
绑定
试试,用这个代替
$command->bindParam('_username',$this->username);
也不太确定变量的可接受语法是什么,因此,如果它仍然不起作用,请尝试删除
并在绑定时使用username
。。。和:查询中的用户名。我不确定,但请尝试获取单引号前的第一个%和单引号后的最后一个%
$command=$connection->createCommand(“选择用户标识
来自用户
其中名称(如%):_username“%” 需要对整个数据进行绑定,而不仅仅是其中的一部分
$command = $connection->createCommand("SELECT user_id
FROM User
WHERE name LIKE :username");
$user = '%' . $this->username . '%';
$command->bindParam(':username',$user);
$this->id_user = $command->queryScalar();
$command->execute();
只需在bindValue中包装“%value%”
$command = $connection->createCommand("SELECT user_id
FROM User
WHERE name LIKE ':_username'");
$command->bindParam(':_username',"%".$this->username."%");
$this->id_user = $command->queryScalar();
$command->execute();
使用%%绑定值的正确方法如下
$command->bindParam(':_username',"%".$this->username."%");
就像我们在Yii2中使用的PDO一样,您也可以这样使用activeQuery表示法
$query = new Query;
$query->select('userid')
->from('user')
->where(['like', 'user', $this->username );
$command = $query->createCommand();
$this->id_user = $command->queryScalar();
我正在使用bindValue。你可以这样用。。
我的模型中有一个查询,并调用控制器上的函数
内部模型:
$query = "SELECT u.id as idUser
FROM vagas_x_candidato vxc
INNER JOIN usuario u ON(u.id = vxc.id_candidato)
WHERE u.nome LIKE :nameUser";
$connection = \Yii::$app->db;
$model = $connection->createCommand($query);
$model->bindValue(":nameUser", '%' . $filter->nameU . '%');
return $model->queryAll();
内部控制器:
$vxc = new VagasXCandidatoSearch();
$vxc = $vxc->candidatosPesquisaAvancada(); //calls my method on model.
您是否考虑过使用而不是自己创建命令?这种类型的呼叫可能更灵活。它还有以不同方式处理的好处。在该语句之后,我有以下错误:PHP致命错误–yii\base\ErrorException无法通过引用传递参数2您可能需要首先将其转换为字符串:例如$user='%'$此->用户名'%'$命令->bindParam(':username',$user);它可以修改以下行:->where(['like','user','%.$this->username'%',false]);