提示我如何通过搜索多个属性来解决问题。
我的桌子:
House:id,name,别名
参数:id,name
Parameter_Value:id,house_id,parameter_i,value
需要得到(示例)房子(宽度= 15,高度= 9,泳池= 1,房间= 3) 宽度,高度,游泳池,房间 - 它的参数_值记录
如何组合addColumnCondition?通过几个参数搜索?
答案 0 :(得分:0)
您可以使用并升级此代码。
行动中:
$parameters = Parameter::model()->findAll();
$criteria = new CDbCriteria();
if ($data = Yii::app()->request->getPost('Parameter')) {
foreach($data as $i => $parameter) {
$criteria->addCondition('parameterValues.value = :value' . $i . ' AND parameterValues.parameter_id = :parameterId' . $i);
$criteria->params[':value' . $i] = $parameter['value'];
$criteria->params[':parameterId' . $i] = $parameters[$i]->id;
}
}
$houses = House::model()->with('parameterValues')->findAll($criteria);
$this->render('view', [
'parameters' => $parameters,
'houses' => $houses,
]);
在视图中:
<?php
echo CHtml::beginForm();
foreach($parameters as $i => $parameter) {
echo CHtml::activeTextField($parameter, '[' . $i . ']value');
}
echo CHtml::submitButton('Search');
echo CHtml::endForm();
?>
内部模特:
public function relations() {
return [
'parameterValues' => [self::HAS_MANY, 'Parameter_Value', 'house_id'],
...
];
}
此代码只是示例。我没有测试过。我希望它对你有所帮助。