提示我如何通过搜索几个属性来解决问题。
我的桌子:
房屋:身份证,姓名,别名
参数:id,名称
Parameter_Value:id,house_id,parameter_i,值
需要获得(示例)房屋(宽度= 15,高度= 9,游泳池= 1,房间= 3)
宽度,高度,池,房间-它是parameter_value记录
如何结合addColumnCondition?通过几个参数搜索?
最佳答案
您可以使用和升级此代码。
实际上:
$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'],
...
];
}
此代码仅是示例。我还没有测试。希望对您有帮助。
关于mysql - yii结合addColumnCondition,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28320607/