2014-06-14 3 views
2

어떻게 관계 테이블의 조건에 따라 데이터 세트를 얻을 수 있습니까?Yii 2, 활성 레코드,

나는 Yii 1에서 with()'on' 문을 사용할 수 있습니다. 이것은 Yii 2에서 작동하지 않거나 좋은 예제를 찾을 수 없습니다. YII 1 예를 들어 나는이를 작성할 수

$criteria = new CDbCriteria(); 
$criteria->with = array('works'=>array('on' => 'works.user_id=t.id AND (works.work_id=$SOMEVALUE OR ...)')); 

나는 이런 식으로 뭔가를 시도 (userRight 내 관계가있다) :

Foo::find()->with(['userRight'=>['on'=>['user_r'=>$this->id]]]); 

YII이 어떤 해결책이 있습니까? 공식 예에서

답변

1

: 테이블에 관계를 가지고 GII를 사용하여 모델, 컨트롤러를 생성하고의 관계에 대한 기능을 할 것입니다 볼 경우

$orders = Order::find()->innerJoinWith([ 
    'customer' => function ($query) { 
     $query->where('customer.created_at > ' . (time() - 24 * 3600)) 
       ->onCondition(['category_id' => 1]); 
    } 
])->all(); 

this link

0

를 참조하십시오. 더 당신은 기능 모델

public function getWorks() 
{ 
    return $this->hasOne(Works::className(), ['id' => 'works_id']); 
} 

hasMany의 단지 플립 ID 경우에 관계 2 개 테이블을 선언 할 수없는 경우.

및 기능

Foo::find()->joinWith('works')->all(); 
에게 전화