Yii 依:按a搜索有很多关系

Yii 依:按a搜索有很多关系,yii,Yii,我有以下几张表 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*/ publi

我有以下几张表

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);
    }
  }
}

Ps:找到了,但我需要指定参数…

因为我发现这个问题是关于一个经典的EAV模型实体–属性–值。因此,对于临时但非最佳解决方案,我将每个参数的值表乘以:

 public function search() {    
   foreach ($properties as $id => $value) {
     $joinAlias = 'p_' . $property->id;
     $join = "\nLEFT JOIN property_value as $joinAlias ON t.id= {$joinAlias}.notice_id AND {$joinAlias}.property_id='{$property_id}'  ";
     $criteria->compare("{$joinAlias}.value", $value);
     $criteria->join .= $join;
   }
 }  

$criteria->with=array'YOUR_TABLE'=>array'alias'=>nt';//它连接一个您指定的表Dzazu,是的,您是对的,忘了写它,但这不是重点:例如:我在三楼有一个公寓要搜索,有4个房间,这两个参数都存储在一列中…您能解释/显示每个模型类的关系吗?如果你有正确的答案,这很容易relations@Skatox很抱歉,回答晚了,但我发现我的问题是关于EAV模型的…在通知模型'propertyValues'=>arrayself::中有一个关系有很多'propertyValues','Notice\u id',在propertyValues'property'=>arrayself::中有一个关系属于'property',property\u id'