我试图用 Yii 框架解决我的问题。我有一个返回 $_POST 的视图:
Array ( [Questions] => Array ( [countries] => Array ( [0] => 1 ) [categories] => 1 ) [yt0] => Search )
类别等信息是单个 ID,其中国家/地区是一个数组。
现在,我的问题是,tu 如何正确使用 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["问题"]["国家"] 只返回一个 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 循环?!请帮忙。
最终,条件的condition
属性需要包含一个使用 MySql IN
函数的片段,例如 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'));
以下代码有效:
$criteria = new CDbCriteria();
$criteria->with = array('countries');
$criteria->addInCondition('countries.id' , $_POST['Questions']['countries']);
$model = Questions::model()->findAll($criteria);