Я разработал и реализовал код табличных отношений в Zend Framework.
Внешний ключ ($content->category
в вашем примере) содержит значение первичного ключа в родительской строке, на которую он ссылается. В вашем примере $category
пока не содержит значения первичного ключа, поскольку вы его не сохранили (при условии, что он использует псевдоключ с автоинкрементом). Вы не можете сохранить строку $content
, пока не заполните ее внешний ключ, поэтому ссылочная целостность удовлетворена:
$contentModel = new Content();
$categoryModel = new Category();
$category = $categoryModel->createRow();
$category->setName('Name Category 4');
$content = $contentModel->createRow();
$content->setTitle('Title 4');
// saving populates the primary key field in the Row object
$category->save();
$content->setCategory($category->category_id);
$content->save();
Бесполезно передавать объект Row в setCategory()
, если в нем не заполнен первичный ключ. $content->save()
завершится ошибкой, если у него нет действительного значения первичного ключа для ссылки.
Поскольку вам необходимо заполнить это поле первичного ключа в любом случае, получить доступ к полю при вызове setCategory()
.
не так сложно.