Добрый день, как можно организовать связь между 3 таблицами.
У меня есть 3 таблицы, машины, каталог компонентов машины, и каталог повреждений.
Ни как не могу связать все эти 3 таблицы вместе, что бы удобно осуществлять выборку по ним.
На пример auto->getComponents->getDamagers();
Попытался связать всё это через отдельную таблицу, car_has_damage, где назначил 3 поля, car_id, component_id, damage_id.
Но столкнулся с проблеммой
foreach ($car->components as $component) {
echo $component->name;
foreach ($component->getDamages($car->id) as $damages) {
echo $damage->name;
}
}
Но вылетает с ошибкой, так как не может получить
$damage->name; "Trying to get property of non-object"
При этом если ответ вывести через var_dump возвращаться куча NULL значений.
//Car model
public function getComponents(){
return CarComponent::find()->all();
}
// Component model
public function getDamages($id)
{
return $this->hasMany(Damage::className(),['id' => 'damage_id'])->viaTable('car_has_damage', ['component_id' => 'id'], function($query)use($id) { $query->onCondition(['car_id' => $id]); });
}