![](/img/trans.png)
[英]How to call a controller function on button onclick in yii2
[英]How to call the SQL LIKE function in Yii2?
在我調用此SQL語句時接收NULL作為值(該記錄存在於MySQL DB中)。 如何在Yii2中使用LIKE功能? 謝謝。
$command = $connection->createCommand("SELECT user_id
FROM User
WHERE name LIKE '%:_username%'");
$command->bindParam(':_username',$this->username);
$this->id_user = $command->queryScalar();
$command->execute();
在Yii2中,您也可以使用activeQuery Notation
$query = new Query;
$query->select('userid')
->from('user')
->where(['like', 'user', $this->username );
$command = $query->createCommand();
$this->id_user = $command->queryScalar();
我認為這里的問題是binding
。
嘗試,改為使用它。
$command->bindParam('_username',$this->username);
還不太確定變量的可接受語法是什么,所以如果它仍然不起作用,請嘗試刪除_
並在綁定上使用username
...並在查詢中使用username
:username
。
我不確定,但嘗試獲得單引號前的第一個%和最后一個單引號后的最后一個%。
$ command = $ connection-> createCommand(“SELECT user_id FROM User WHERE name LIKE%':_ 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."%");
就像我們使用的PDO一樣
我正在使用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.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.