如何在Yii2中访问leftJoin中的两个表格字段

时间:2017-06-07 07:41:25

标签: yii2 left-join

我需要游览的字段,但是在代码之下只需获取tourPackage的字段,我必须使用Active Record。

我知道我必须在另一个模型中使用属性来解决这个问题,但我不想使用属性,因为有很多字段或属性。

如何获取巡回表数据?

$models = TourPackage::find()->select(['tour.*'])->leftJoin('tour', 'tour.id=tour_package.tour_id')->all();

2 个答案:

答案 0 :(得分:2)

您使用TourPackage对象, 所以你无法获得Tour模型的属性。 如果您想获得Tour模型属性,请尝试asArray()

离。

$models = TourPackage::find()->select(['tour.*'])->leftJoin('tour', 'tour.id=tour_package.tour_id')->asArray()->all();

现在您将获得Tour模型属性。

答案 1 :(得分:1)

TourPackage中,您需要定义公共属性,您将从Tour加入。 例如,如果您在巡视中有列号,那么您可以写:

class TourPackage extends \yii\db\ActiveRecord
{
    public $number
    // ..and other properties you take from tour
TourPackage类中

,并在Query中添加以下select:

$models = TourPackage::find()->addSelect(['tour_package.*', 'tour.number AS number'])->leftJoin('tour', 'tour.id=tour_package.tour_id')->all();

当然,您可以撰写addSelect(['tour_package.*', 'tour.*']),但在这种情况下,具有相似名称的tour列将覆盖tour_package列。