2010-12-01 51 views
0

當我向其中一個habtm模型添加hasOne關係時發生此問題。 categories_posts現在不保存數據庫中的任何內容。我以前做過。在CakePHP中保存hasOne與HABTM

現在,我有如下形式是這樣的:

<?php 
echo $this->Form->create('Post'); 
echo $this->Form->input('Post.title'); 
echo $this->Form->input('Post.Category', array('multiple' => 'checkbox')); 
echo $this->Form->input('Post.body', array('rows' => '3')); 

echo $this->Form->input('Page.title'); 
echo $this->Form->input('Page.uri'); 
echo $this->Form->input('Page.meta_keywords'); 
echo $this->Form->input('Page.meta_description'); 
echo $this->Form->input('Page.layout'); 

echo $this->Form->end('Save Post'); 
?> 

頁面模型是這樣的:

class Page extends AppModel { 
var $name = 'Page'; 
var $order = array('Page.modified' => 'desc'); 

var $hasOne = array(
    'Post' => array(
    'className' => 'Post' 
)); 

var $hasMany = array(
    'Snippet' => array(
    'className' => 'Snippet' 
)); 
} 

Post模型是這樣的:

class Post extends AppModel { 
var $name = 'Post'; 
var $hasAndBelongsToMany = array(
    'Category' => array(
    'className' => 'Category' 
) 
); 
var $belongsTo = array(
    'Page' => array(
    'className' => 'Page' 
) 
); 
var $actsAs = array('Containable'); 
var $virtualFields = array(
    'date_posted' => 'DATE_SUB(Post.created, INTERVAL 7 DAY)' 
); 

} 

分類模型看起來像這樣:

class Category extends AppModel { 
    var $name = 'Category'; 
    var $hasAndBelongsToMany = array(
     'Post' => array(
      'className' => 'Post' 
     ) 
    ); 

    var $actsAs = array('Containable'); 
} 

我的表有些看起來是這樣的:

categories 
id name 

categories_posts 
category_id post_id 

pages 
id title uri meta_keywords meta_description layout created modified 

posts 
id page_id title uri body created modified 

這是做的方法節省

function admin_add() { 
    $this->set('categories', $this->Post->Category->find('list')); 

    if (! empty($this->data)) { 
     if ($this->Post->saveAll($this->data)) { 
      $this->Session->setFlash('Your post has been saved', 'flash_good'); 
      $this->redirect($this->here); 
     } else { 
      $this->Session->setFlash('Your post has not been saved','flash_bad'); 
     } 
    } 
} 

這是提交當樣品陣列:

array(2) { 
    ["Post"]=> 
    array(3) { 
    ["title"]=> 
    string(10) "Post Title" 
    ["Category"]=> 
    array(4) { 
     [0]=> 
     string(1) "1" 
     [1]=> 
     string(1) "2" 
     [2]=> 
     string(1) "3" 
     [3]=> 
     string(1) "4" 
    } 
    ["body"]=> 
    string(16) "<p>Post Body</p>" 
    } 
    ["Page"]=> 
    array(5) { 
    ["title"]=> 
    string(10) "Page Title" 
    ["uri"]=> 
    string(0) "" 
    ["meta_keywords"]=> 
    string(11) "Page Meta K" 
    ["meta_description"]=> 
    string(11) "Page Meta D" 
    ["layout"]=> 
    string(11) "Page Layout" 
    } 
} 

爲什麼ISN 't categories_posts保存?

回答

1

似乎所有我需要做的是有這個形式:

echo $this->Form->input('Category.Category', array('multiple' => 'checkbox'));