Всем, привет. Пытаюсь построить вывод в дропдауне название статусов с название груп, к которым они относятся.
Должно получится вот так:
У меня есть три таблицы: Orders. Здесь связь такая:
public function getOrderStatus(): ActiveQuery
{
return $this->hasOne(OrdersStatuses::class, ['id' => 'status_id']);
}
В OrdersStatuses:
public function getGroup(): ActiveQuery
{
return $this->hasOne(OrderStatusGroups::class, ['id' => 'group_id']);
}
public function getOrders(): ActiveQuery
{
return $this->hasMany(Orders::class, ['status_id' => 'id']);
}
В OrderStatusGroups:
public function getStatuses(): ActiveQuery
{
return $this->hasMany(OrdersStatuses::class, ['group_id' => 'id']);
}
В экшине контроллера пишу так:
$orderStatuses = ShopOrdersStatuses::find()->all();
$statusList = [];
foreach ($orderStatuses as $orderStatus) {
$statusList[$orderStatus->group->name][$orderStatus->id] = $orderStatus->name ;
}
$statusList = ArrayHelper::merge(['' => 'Все'], ArrayHelper::map($orderStatuses, 'id', 'name'));
В return:
return $this->render('update', [
'model' => $model,
'orderStatuses' => $statusList,
]);
Но выскакивает ошибка: Attempt to read property "name" on null
B ссылается на строчку в цикле.
В БД все данные есть, все записано, нигде null не стоит.
PHP 8.1
Подскажите пожалуйста где у меня ошибка и в какую сторону вообще копать?
За ранее большое спасибо =)