2014-12-05 4 views
0

У меня есть 2 таблицы. и переменная $ идентификатор с идентификатором A таблицыЗапрос SQL из нескольких таблиц в Yii2

$A_data= A::find() 
    ->where(['id' => $id]) 
    ->one(); 
$B_data= B::find() 
    ->where(['id' => $A_data->B_id]) 
    ->one(); 
echo $B_data->name; 

Этот код принимает идентификатор и получает строку из таблицы, затем с B_id от этой линии получает строку из таблицы B. Затем я распечатываю данные из таблицы B.

Как это сделать с помощью одного запроса? не спрашивать таблицы для данных один за другим?

+0

Вы прочитали это http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#working-with-relational-data? – soju

ответ

1

У вас должно быть следующее отношение в вашей модели A, например. :

public function getB() 
{ 
    return $this->hasOne(B::className(), ['id' => 'B_id']); 
} 

И ваш код может быть:

$A_data = A::find()->where(['id'=>$id])->one(); 
echo $A_data->B->name; 

PS: будет два SQL-запросы для этого (ленивый или хотят).

Смежные вопросы