在yii2中使用like运算符选择数据

时间:2015-07-01 13:49:37

标签: mysql yii2

如何使用Like运算符检索数据?
我试过这个,但收到了一个错误:

    use yii\db\Query;
    public function getExportData($searchVal = '')
    {
         $query = new Query;
         if($searchVal != '') { **here i am getting error when searchVall != ''**   
             $query->select('*')->from('post')
             ->where(['like', 'title', $searchVal])
             ->orderBy(['added_date_time' => SORT_DESC]);
             $posts = $query->createCommand()->queryAll();
         } else {
             $query->select('*')->from('post')->orderBy(['added_date_time' => SORT_DESC]);
             $posts = $query->createCommand()->queryAll();
                }
             return $posts;
     }

select语句有简单的方法吗?

4 个答案:

答案 0 :(得分:13)

尝试这样的事情:

    $query = Post::find();
    $query->andFilterWhere(['like', 'title', $searchVal])
         ->orderBy(['added_date_time' => SORT_DESC])
         ->all();

答案 1 :(得分:1)

如果要使用变量传递查询,请使用findBySql()方法。 例如,

$query = "SELECT * FROM `post` where `title` LIKE 'foo%' ";
$result = Model::findBySql($query)->all();

希望这有助于解决您的问题。

答案 2 :(得分:1)

最佳做法是这样的:

$query = "SELECT * FROM ".YourModel::tableName()." where title LIKE :param";
$result = YourModel::findBySql($query, [':param' => $param.'%'])->all();

希望这会对某人有所帮助。

答案 3 :(得分:0)