结合addColumnCondition

结合addColumnCondition

提示我如何通过搜索几个属性来解决问题。

我的桌子:
房屋:身份证,姓名,别名
参数: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/

10-12 02:19