отношения hasAndBelongsToMany в CakePHP не сохраняют данные

Я столкнулся с проблемой в CakePHP. Я хочу отношения hasAndBelongsToMany с bs_categories а также bs_listing_types столы. (Категория может иметь несколько типов листинга).

Это структура таблицы, которую я использовал.

bs_categories
-------------
id             int(10)
parent_id      int(10)
lft            int(10)
rght           int(10)
title          varchar(255)
body           text
meta_title     varchar(255)
meta_keyword   text
meta_desc      text
slug           varchar(255)
status         int(1)
created        datetime
modified       datetime

bs_listing_types
-----------------
id          int(11)
title       varchar(255)
status      int(1)
created     datetime
modified    datetime

bs_listing_types_categories
---------------------------
id              int(11)
listing_type_id int(11)
category_id     int(11)

Я написал следующий код в модели:

/**
* hasAndBelongsToMany associations
*
* @var array
*/
public $hasAndBelongsToMany = array(
'ListingType' => array(
'className'             => 'ListingType',
'joinTable'             => 'listing_types_categories',
'foreignKey'            => 'listing_type_id',
'associationForeignKey' => 'category_id',
'unique'                => 'keepExisting',
'conditions'            => '',
'fields'                => '',
'order'                 => '',
'limit'                 => '',
'offset'                => '',
'finderQuery'           => '',
)
);

Во время сохранения я получаю следующие данные.

Array(
[Category] => Array
(
[listing_type_id] => Array
(
[0] => 2
[1] => 3
)

[parent_id] =>
[id] => 1
[title] => Advert
[meta_title] => Advert
[meta_keyword] => Advert
[meta_desc] => Advert
[status] => 1
))

Но проблема в том, что это не сохранение данных в bs_listing_types_categories Таблица. Я делаю что-то не так? Пожалуйста помоги!

0

Решение

HABTM НИКОГДА не имеет столбца идентификатора согласно конвенции cakePHP, данные не сохраняются.

bs_listing_types_categories

Будут иметь только следующие поля

listing_type_id int(11)
category_id     int(11)

Для дополнительной информации ССЫЛКА НА САЙТ

За пример
Если посты связаны с тегами в HABTM, то посмотрите posts_to_tags Без поля идентификатора.

CREATE TABLE `posts` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`body` text NOT NULL,
PRIMARY KEY  (`id`)
);
CREATE TABLE `tags` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
PRIMARY KEY  (`id`)
);
CREATE TABLE `posts_tags` (
`post_id` int(11) NOT NULL,
`tag_id` int(11) NOT NULL,
PRIMARY KEY  (`post_id`,`tag_id`)
);

Структура вашего стола

0

Другие решения

ваш массив должен быть таким, поэтому вы должны сделать массив таким, прежде чем применять сохранение с помощью цикла foreach.

Array(
[Category] => Array
(
[listing_type_id] => Array
(
[0] => 2
)
[listing_type_id] => Array
(
[1] => 3
)

[parent_id] =>
[id] => 1
[title] => Advert
[meta_title] => Advert
[meta_keyword] => Advert
[meta_desc] => Advert
[status] => 1
))

и при сохранении вы должны использовать saveAssociated.

0

По вопросам рекламы [email protected]