2017-09-14 2 views
1

私は結合テーブルから選択結果列を取得しようとしていました。クエリは次のようになります。Yii2 asArrayメソッドのない結合テーブルから列を追加

$query = MediaLibrary::find()->select([ 
    'media_library.*', 
    'category_name' =>'ctg.name', 
    'category_id'  =>'ctg.id', 
    'entity_name'  =>'ent.name', 
    'entity_id'  =>'ent.id', 
    'category_alias' =>'ctg.alias', 
])->joinWith([ 
    'mediaLibraryCategory' => function ($q) { 
    $q->from(MediaLibraryCategory::tableName().' ctg'); 
    }, 
    'mediaLibraryEntity' => function ($q) { 
    $q->from(MediaLibraryEntity::tableName().' ent'); 
    } 
])->asArray(); 

しかし、問題は、別のテーブル(asArray()メソッド)からそのデータ配列を取得したくないということです。しかし、私がそのメソッドを削除すると、別のテーブルのカラムがなくなります。

私は間違っていますか? asArray()メソッドなしで列を追加する方法はありますか?

答えて

0

joinWith()メソッドを使用しています(2番目のパラメータなし)$eagerLoading$eagerLoadingパラメータがtrueの場合、指定されたリレーションを使用してwith()を呼び出すのと同等の、指定されたリレーションに対する積極的な読み込みも実行されます。問題を解決するには、joinWith()関数に2番目のパラメータfalseを追加します。

More in Yii2 ActiveQuery

+0

正しい!私は同じことを書こうとしていた。あなたはそれに私を打つ – Imtiaz

+0

はい、今私が参照してください - 私はasArray()を残して、falseパラメータを追加する必要があります。今、それは動作し、非常にありがとう!!!! –

+0

@KatyaMakeeva、この答えがあなたを満足させる場合は、正解として選択してください。また、感謝の気持ちを表明したい場合は、それをアップしてください。 – Imtiaz

関連する問題