Pabloss
(Heros68)
1
Może mi ktoś wytłumaczyć do czego w ogóle to służy? w sensie to via() albo viaTable()? czytam i czytam dokumentację i nic z tego nie mogę zrozumiec.
mam tabelę
products
order
order_products (many to many)
Po co i jak tego używać?
aformat
(Afnwork)
2
W przypadku relacji wiele do wielu kiedy masz tablice pośrednią musisz podać w relacji sposób złączenia.
Za pomocą viaTable kiedy podajesz tabele pośrednią
public function getItems()
{
return $this->hasMany(Item::className(), ['id' => 'item_id'])
->viaTable('order_item', ['order_id' => 'id']);
}
lub via kiedy podajesz relację. Relacje oczywiście należy zdefiniować i nie musi zawierać tylko kluczy, ale mogą być też tam warunki dodatkowe.
public function getItems()
{
return $this->hasMany(Item::className(), ['id' => 'item_id'])
->via('orderItems');
}
public function getOrderItems()
{
return $this->hasMany(OrderItem::className(), ['order_id' => 'id']);
}
W praktyce relacja oraz viaTable mogą zawierać tą samą definicję, sposób wiązania.