YII 1.1-查询生成器:如何以FETCH_KEY_PAIR格式获取多个IN运算符记录

时间:2019-01-12 09:04:26

标签: mysql yii

我们在获取PDO格式的记录时遇到了一些问题。参见下面的示例代码:

$getCategories= Yii::app()->db->createCommand()
        ->select('id,category_name')
        ->from('content_categories')
        ->where('id IN (:id)', array(':id'=>$getContentList['content_category_value']))
        //->where("id IN ({$getContentList['content_category_value']})")
        ->queryAll();
print_r($getCategories); exit;

输出:

Array
(
    [0] => Array
        (
            [id] => 1525
            [category_name] => TV 
        )

)

在查询$getContentList['content_category_value'])上返回1525,45,但我们只得到一条记录。

当我们手动执行查询时:

SELECT * FROM `content_categories` WHERE `id` IN (1525,45);

它返回:

enter image description here

实际上,我们有两个类别,但以上查询仅获取一个类别。您能否检查一下并帮助我了解我们如何使用PDO概念显示多条记录。

2 个答案:

答案 0 :(得分:0)

未经测试,但您可以尝试这样

 $getCategories= Yii::app()->db-
 >createCommand()
    ->select('id,category_name')
    ->from('content_categories')
    ->where(array('in', 'id', 
    $getContentList['content_category_value']))    
    ->queryAll();
print_r($getCategories); exit;

答案 1 :(得分:0)

如果$getContentList['content_category_value']是字符串,那么它将在查询中用作字符串。所以你可能会得到这样的东西:

SELECT * FROM `content_categories` WHERE `id` IN ('1525,45');

如果要建立IN条件,则需要使用带有IN运算符的值数组:

->where(['in', 'id', explode(',' $getContentList['content_category_value'])])