yii2 findAll无效传递变量

时间:2017-01-19 20:03:49

标签: php mysql yii yii2

我正在尝试获取以下查询:

SELECT * FROM `book_category_tree` WHERE `id` IN (8, 9, 10, 15)

根据以下yii2文档:

http://www.yiiframework.com/doc-2.0/yii-db-baseactiverecord.html#findAll%28%29-detail

如果我使用:

$rows = BookCategoryTree::findAll([8,9,10,15]);

它工作得很完美,但是当我尝试使用值为yii2的变量时,我不会识别这些值:

$myValues = '8,9,10,15';
$rows = BookCategoryTree::findAll([$myValues]);

并生成以下查询:

SELECT * FROM `book_category_tree` WHERE `id`='8,9,10,15'

我为了避免这种情况而疯狂,我也试过了:

$rows = BookCategoryTree::find()->where(['in','id',[$myValues]])->all();

但我没有运气。

欢迎任何想法,

由于

1 个答案:

答案 0 :(得分:2)

你应该使用带有运算符表示法的where条件

 $rows = BookCategoryTree::find()->where( ['in', 'id', [8,9,10,15]])->all();

 $myValues = [8,9,10,15];
 $rows = BookCategoryTree::find()->where(['in','id',$myValues])->all();

如果你在字符串中有值,你可以使用explode来构建数组

 $myValues =explode(',', $string_values);