【发布时间】:2025-12-20 10:55:12
【问题描述】:
我有以下表格
notice[id, type],
property[id, type],
property_value[id, notice_id, property_id, value].
每个通知都有其类型指定的属性。我需要同时通过几个属性进行过滤,问题是如何指定哪个属性应该具有指定值?
class Notice extends CActiveRecord{
/** @var array property_id=>value from $_GET*/
public $searchParams= array();
public function search() {
$criteria = new CDbCriteria;
// $criteria->together = true;
$criteria->compare('t.type', $this->type);
foreach ( $searchParams as $property_id => $value) {
/// What should i write here?
/// $criteria->compare('propertyValues.id', $id);
/// $criteria->compare('propertyValues.value', $value);
}
}
}
【问题讨论】:
-
$criteria->with = array('YOUR_TABLE' => array('alias' => 'nt')); // 它加入你指定的表
-
zazu,是的,你是对的,忘记写了,但这不是重点:例如:我在 3 楼有一个公寓要搜索,有 4 个房间,这两个参数都存储了在一列中...
-
你能解释/告诉我每个模型类的关系()吗?如果你有正确的关系,这很容易()
-
@Skatox 抱歉,回答迟了,但我发现我的问题是围绕 EAV 模型...通知模型中有一个关系 ('propertyValues' => array(self::HAS_MANY, 'propertyValue ', 'notice_id')) 和 PropertyValue 中的一个 ('property' => array(self::BELONGS_TO, 'Property', 'property_id'))
标签: yii