0

我试图用 Yii 框架解决我的问题。我有一个返回 $_POST 的视图:

Array ( [Questions] => Array ( [countries] => Array ( [0] => 1 ) [categories] => 1 ) [yt0] => Search )

类别等信息是单个 id,其中国家是一个数组。

现在,我的问题是,如何正确使用 Yii 模型查询构建器,以便我可以从数组中包含许多国家/地区的语句。就像是:

"SELECT questions.name from questions WHERE countries.id == $_Post['Questions']['countries'][ 0 ] AND countries.id == $_Post['Questions']['countries'][ 1 ] AND .... + n times for countries" 

当 $_POST['Questions']['countries'] 只返回一个 id 时,我使用了以下内容:

  $model = Questions::model()->with( 

                array(  'countries' => array (
                          'select' => 'name',
                          'condition' => 'countries.id=:cou_id', // How to do for array?
                          'params' => array (':cou_id' => $_POST["Questions"]["countries"]) // How to do for array ? 
                        ) 
                )

        )->findAll(array ('select' => 'question')); 

多国怎么办?如何在 Yii:model 查询构建器中包含 foreach 循环?!请帮忙。

4

2 回答 2

2

最终,condition标准的属性需要包含一个使用 MySqlIN函数的片段,例如countries.id IN (x, y, z, ...). 你可以手动完成,但 Yii 提供了方便的方法CDbCriteria::addInCondition来帮助:

$countryCriteria = new CDbCriteria();
$countryCriteria->select = 'name';
$countryCriteria->addInCondition('id', $_POST["Questions"]["countries"]);

$model = Questions::model()->with(array('countries' => $countryCriteria))
                           ->findAll(array('select' => 'question')); 
于 2013-09-14T11:37:48.183 回答
0

以下代码有效:

$criteria = new CDbCriteria(); 
$criteria->with = array('countries');
$criteria->addInCondition('countries.id' , $_POST['Questions']['countries']);
$model = Questions::model()->findAll($criteria);
于 2013-09-14T17:14:36.693 回答