@lenkagruzd

Yii2: Как вывести несколько связей один ко многим в вид?

Доброго времени суток.
Стоит задача, вывода в вид связи один ко многим, но таких связей может быть несколько.

Имеется связанные таблицы заказов и продуктов.
В виде нужно вывести все заказы с продуктами.

[ 1 заказ ] -> [ Продукт 1, Продукт 2, ... ]
[ 2 заказ ] -> [ Продукт 1, Продукт 2, ... ]
.....

Глаз уже замылился, найти решения вопроса не могу. Благодарю за помощь/подсказку в какую сторону копать.

-------- Update-------

В моделях:

public function getOrderItems() {
   return $this->hasMany(OrderItems::className(), ['order_id' => 'id']);
}


public function getOrder() {
   return $this->hasOne(Order::className(), ['id' => 'order_id']);
}


В Контроллере:

$orders = Order::find()->where(['email' => Yii::$app->user->identity['email']])->all();
    foreach ($orders as $id => $items) {
        $item = $items->getOrderItems()->all();
    }
return $this->render('order', compact('orders'));


Все распечатывается в контроллере, а как передать в вид - для меня осталось мучительной тайной.
  • Вопрос задан
  • 612 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
1. Настроить связи в модели
2. Загрузить связь продуктов и в цикле перебрать и вывести все данные в ней
например:
class Product extends \yii\db\ActiveRecord
{
    ...
}

class Order extends \yii\db\ActiveRecord
{
     ...

    public function getProducts()
    {
        return $this->hasMany(Product::className(), ['order_id' => 'id']);
    }

    ...
}


$orders = Order::find()->with('product')->all();
foreach ($orders as $order) {
    foreach ($order->products as $product) {
        echo 'Order id: ' . $order->id . ' Product Id: ' .  $product->id;
   }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы