簡體   English   中英

CakePHP中的hasAndBelongsToMany關系未保存數據

[英]hasAndBelongsToMany relationship in CakePHP not saving the data

我在CakePHP中遇到問題。 我想要hasAndBelongsToMany與bs_categoriesbs_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表中。 我做錯什么了嗎? 請幫忙!

HABTM永遠不會按照cakePHP慣例具有ID列,否則數據將無法保存。

bs_listing_types_categories

僅具有以下字段

listing_type_id int(11)
category_id     int(11)

有關更多信息LINK

例如 ,如果帖子都涉及到在HABTM標簽,然后,檢查出posts_to_tags沒有id字段。

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`)
);

您的表格結構

您的數組應該像這樣,因此在使用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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM