2011-04-14 65 views
0

我得到這個錯誤在我的CakePHP程序CakePHP的關係錯誤

Warning (512): SQL Error: 1054: Unknown column 'Category.post_id' in 'field list' [CORE\cake\libs\model\datasources\dbo_source.php, line 684]

我假設,這個錯誤是由我如何設置在模型中的關係,因爲錯誤說,它正在尋找引起'Category.post_id',一個不存在的字段。

這裏的類型模型代碼:

class Category extends AppModel { 
    var $name = 'Category'; 
    var $belongsTo = 'Post'; 
} 

和後期型號代碼:

class Post extends AppModel { 
    var $name = 'Post'; 
    var $belongsTo = 'User'; 
    var $hasMany = 'Category'; 
} 

它顯示了幾種方法,但這裏是我的崗位index動作:

function index() { 
    $this->set('posts', $this->Post->find('all')); 
} 

任何想法如何我可以解決這個問題?

+0

不除非你發佈的方法你得到的錯誤和你的關係。 – JohnP 2011-04-14 12:43:59

+0

在此處發佈您的型號代碼。 – Headshota 2011-04-14 12:45:24

+1

你在類別表中有'post_id'字段嗎? – JJJ 2011-04-14 12:54:33

回答

-1

我的數據庫中沒有post_id字段。添加了那一列,我的問題就解決了。

0

使用列id,post_id,category_id創建另一個名爲posts_categories的表。

然後發佈型號

class Post extends AppModel { 
    public $name = 'Post'; 
    public $hasAndBelongsToMany = array('Category'); 
} 

那麼你類別型號

class Category extends AppModel { 
    public $name = 'Category'; 
    public $hasAndBelongsToMany = array('Post'); 
} 
+0

不要這樣做。這個例子不是一個HABTM關係。 – 2012-11-14 19:43:20

0

你應該建立在模型中的主鍵ID,如果它`不一樣的是自動生成的(對於模型發佈它是post_id)。所以如果你的表主鍵名是'id',你的發佈模型應該是

class Post extends AppModel { 
    var $name = 'Post'; 
    var $belongsTo = 'User'; 
    var $hasMany = 'Category'; 
    var $primaryKey = 'id'; 
}