2017-05-17 14 views
0

テーブルからすべてのID(1& 16)を取得するクエリ$occupierがあります。問題は、どのように私はActiveDataProviderクエリに配置する必要がありますので、私はクエリ内foreachループを行うことはできません渡すすべてのIDを取得できます。Yii2 hasMany関係を使用してデータを取得

関係:

public function getop_occupier() 
    { 
     return $this->hasMany(OpOccupier::classname(),['id'=>'unit_id']); 
    } 

コントローラー:

$occupier = OpOccupier::find() 
       ->where(['unit_id'=>$id]) 
       ->all(); 


$dataProviderTranscation = new ActiveDataProvider([ 
'query' => OpOccupierTrxGroup::find()->where(['or','occupier_id'=>10,'occupier_id'=>16]),]); 

私が試した:

$dataProviderTranscation = new ActiveDataProvider([ 
    'query' => OpOccupierTrxGroup::find()->where(['occupier_id'=>$occupier['id'])->all(); 

それはエラーUNDEFINED INDEXのIDを返します。

何か助けや助言をいただければ幸いです。おかげ

+0

削除 'すべてを()'テーブルを結合するためのlefJoin関係に使用することができます。 –

答えて

0

あなたが

$dataProviderTranscation = 
new ActiveDataProvider([ 
'query' => 
     OpOccupierTrxGroup::find() 
     ->where(['op_occupier'=>$occupier['id']) 
     ->andWhere(['occupier.id'=>[10,16]]) 
     ->leftJoin('occupier','occupier.id=op_occupier_trx_group.occupier_id') 
     ->all(); 
関連する問題