来自Yii2中几个表的SQL请求

时间:2014-12-05 13:27:45

标签: mysql activerecord yii2

我有2张桌子。 和id为A表的$ id变量

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

此代码获取id并从A表中获取行,然后从该行获取B_id从B表获取行。 然后我打印出B表中的数据。

如何通过一个请求执行此操作?不是一个接一个地询问表格数据?

1 个答案:

答案 0 :(得分: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请求(懒惰或渴望)。