首页 > Yii2 关联查询的问题

Yii2 关联查询的问题

我当前有三张表:
1.business 商家表

id
name
...

2.activity 活动表

id
name
...

3.business_activity 商家活动关联表

id
business_id
activity_id
...

查询里的代码:

$businessId = ...;    
$activities = BusinessActivity::find()->joinWith('activity')->where(['business_id' => $businessId])->asArray()->all();

BusinessActivity类里的关联查询方法:

public function getActivity() {
    return $this->hasOne(Activity::className(), ['id' => 'activity_id']);
}

得到的结果大致如下:

Array
(
    [0] => Array
        (
            [id] => 1
            [business_id] => 2
            [activity_id] => 1
            [activity] => Array
                (
                    [id] => 1
                    [name] => 新用户立减(不与其他活动共享)
                )

        )

    [1] => Array
        (
            [id] => 2
            [business_id] => 2
            [activity_id] => 2
            [activity] => Array
                (
                    [id] => 2
                    [name] => 满减优惠
                )

        )

)

请问怎样查询能得到这种查询结果:

Array
(
    [0] => Array
        (
            [id] => 1
            [business_id] => 2
            [activity_id] => 1
            [name] => 新用户立减(不与其他活动共享)
        )

    [1] => Array
        (
            [id] => 2
            [business_id] => 2
            [activity_id] => 2
            [name] => 满减优惠
        )

)

也就是想把原来查询出来的二维数组弄成一维数组(使用yii2现有api来做),先谢谢大家了。


$activities = BusinessActivity::find()->joinWith('activity', false)
                              ->select(['business_activity.*', 'activity.name'])
                              ->where(['business_id' => $businessId])->asArray()->all();

https://github.com/yiisoft/yii2/blob/master/docs/guide/db-active-record.md#selecting-extra-fields

【热门文章】
【热门文章】