Temat: Problem z relacją M:N (HABTM)
Witam.
Jestem początkującym jeżeli chodzi o Cake'a i frameworki MCV. Zacząłem pisać pewną aplikację i utknąłem na banalnej rzeczy.
Założenie jest takie:
Mam dwie tabele z produktami i rozmiarami. Każdy produkt może mieć wiele rozmiarów, a każdy rozmiar może odnosić się do wielu produktów. Klasyczny przykład relacji M:N, którą rozbiję przy pomocy dodatkowej tabeli.
Mam zatem dane tabele z kluczami:
Product (id)
ProductSize (id, product_id, size_id)
Size (id) Oraz modele:
class Product extends AppModel
{
var $name = 'Product';
var $hasMany = array('ProductSize');
}
class ProductSize extends AppModel
{
var $name = 'ProductSize';
var $belongsTo = array('Product','Size');
}
class Size extends AppModel
{
var $name = 'Size';
var $hasMany = array('ProductSize');
}A w kontrolerze ProductsController:
$this->Product->recursive = 2;
$this->set('products', $this->Product->find('all'));Problem polega na tym, że Cake generuje tylko dwa SELECTy, które obejmują tylko dwie pierwsze tabele tj. Product i ProductSize, nic nie pobiera z tabeli Size. Wogóle dziwna sprawa, bo model wogóle nie reaguje na zmianę recursive'a (recursive próbowałem już ustawiać chyba we wszystkich możliwych miejscach - w klasie modelu, przy find(), w kontrolerze - żadnej róznicy).
Dodam, że pomyślne udało mi się powiązać tabele relacją HABTM w Cake'u, jednakże nie odpowiada mi to z racji tego, że utrudni to aktualizację bardziej złożonych tabel (a przynajmniej tak sugerowano w Cookbooku).
Za wszelkie rady, co tutaj mogłem skopać, będe wdzięczny.
PS. Używam CakePHP 1.2
Ostatnio edytowany przez jermi (2010-02-13 18:08:40)