Я только изучаю CakePHP, мое простое приложение связывает две таблицы с отношением hasAndBelongsToMany. Я ожидал, что скаффолдинг позволит мне связать посты с тегами, но это не так.
Вот код:
SQL
CREATE TABLE `posts` (
`id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`content` TEXT,
PRIMARY KEY ( `id` )
);
CREATE TABLE `tags` (
`id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`name` VARCHAR( 100 ) DEFAULT NULL ,
PRIMARY KEY ( `id` )
);
CREATE TABLE `posts_tags` (
`id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`post_id` INT( 11 ) UNSIGNED DEFAULT NULL ,
`tag_id` INT( 11 ) UNSIGNED DEFAULT NULL ,
PRIMARY KEY ( `id` )
);
содержимое папки моделей:
post.php
class Post extends AppModel {
var $name = 'Post';
var $hasAndBelongsToMany = array('Tag');
}
тег.php
class Tag extends AppModel {
var $name = 'Tag';
var $hasAndBelongsToMany = array('Post');
}
содержимое папки контроллеров
posts_controller.php
class PostsController extends AppController {
var $name = 'Posts';
var $scaffold;
}
tags_controller.php
class TagsController extends AppController {
var $name = 'Tags';
var $scaffold;
}
В приложении я могу создать/отредактировать/удалить пост или тег, но нет возможности связать их.
edit: в моих представлениях с шаблонами нет нескольких вариантов выбора, чтобы связать теги с сообщениями и т. д. Я использую v 1.2.4.8284.