Многомерный связанный массив до 3 уровня?

Привет. Есть ли возможность подключить к модели другие модели в связке по id?
Задача такая: Есть Магазин где имеются сформированные заказы, у заказов есть заказанный товар, у товара есть статусы.
Модель:
class Orders extends \yii\db\ActiveRecord
{
    public static function tableName()
    {
        return 'orders';
    }

    public function getOrderProducts()
    {
        return $this->hasMany(OrderProducts::className(), ['order_id' => 'id']); // Выводит массив с товаром
    }

    public function getStatus()
    {
        return $this->hasOne(OrderStatuses::className(), ['id' => 'status_id']); // Выводит статус к order
    }

}


Контроллер:
public function actionMyOrders()
    {

        if (!Yii::$app->user->isGuest) {
            $orders = Orders::find()
->where(['user_id' => Yii::$app->user->identity['id']])
->with(['status', 'orderProducts', ])
                ->asArray()->all();
        } else {
            return Yii::$app->response->redirect(['/mart/login']);
        }
        return $this->render('myOrders', [
            'orders' => $orders
        ]);

    }


Вью(Дебаг):
Array
(
    [0] => Array
        (
            [id] => 174
            [invoice_order] => 2021-19-ALM-174
            [payment_method_id] => 
            [order_comments] => 
            [billing_first_name] => 
            [billing_last_name] => 
            [billing_phone] => 
            [billing_email] => 
            [terms_field] => 
            [terms] => 
            [ip] => 37.99.87.214
            [user_id] => 68
            [status_id] => 1
            [created_at] => 2021-02-19 20:33:21
            [updated_at] => 2021-02-19 20:33:21
            [status] => Array
                (
                    [id] => 1
                    [name_status] => В обработке
                    [status] => 1
                    [created_at] => 
                    [updated_at] => 
                )

            [orderProducts] => Array
                (
                    [0] => Array
                        (
                            [id] => 261
                            [order_id] => 174
                            [product_id] => 85
                            [product_name] => Название товара
                            [quantity] => 1
                            [price] => 4200
                            [total] => 4200
                            [status_id] => 1
                            [updated_at] => 2021-02-19 20:33:21
                            [created_at] => 2021-02-19 20:33:21
                        )

                    [1] => Array
                        (
                            [id] => 263
                            [order_id] => 174
                            [product_id] => 83
                            [product_name] => Название товара
                            [quantity] => 1
                            [price] => 600
                            [total] => 600
                            [status_id] => 1
                            [updated_at] => 2021-02-19 20:33:21
                            [created_at] => 2021-02-19 20:33:21
                        )

                )

        )
)

Как видно, связка order -> status - есть. Вот не могу добавить к товару статус.
Должно быть так...
60322f897ddc1496316102.png

Может у кото-то будет логика другого подхода к данной реализации, пожалуйста - посоветуйте.
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы