2011-03-31 42 views
3

我有一個模型Post -> hasAndBelongsToMany -> TagCakePHP的測試套件:進口燈具表爲HABTM

爲了測試,我創建了各型號的燈具,例如,對於模型後看起來像這樣

class PostFixture extends CakeTestFixture { 
    var $import = array('model' => 'Post', 'records' => true, 'connection' => 'fixtures'); 
} 
夾具

所有的一切都爲模型的偉大工程,但是當我嘗試創建爲HABTM關係夾具,用同樣的方法行不通:

class PostsTagFixture extends CakeTestFixture { 
    var $import = array('model' => 'PostTag', 'records' => true, 'connection' => 'fixtures'); 
} 

由CakePHP生成的SQL如下

CREATE TABLE `service_types_technicals` (
    `technical_id` int(20) NOT NULL AUTO_INCREMENT, 
    `service_type_id` int(20) NOT NULL AUTO_INCREMENT, 
    `id` varchar(255) NOT NULL, PRIMARY KEY (`id`)) ; 

這是不正確的,因爲該表沒有名爲id的字段。

然後,我嘗試這樣做:

class PostsTagFixture extends CakeTestFixture { 
    var $name = 'PostsTag'; 
    var $import = array('table' => 'posts_tags', 'records' => true, 'connection' => 'fixtures'); 
} 

再次,錯誤,但這次的SQL是:

CREATE TABLE `service_types_technicals` (
    `technical_id` int(20) NOT NULL AUTO_INCREMENT, 
    `service_type_id` int(20) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`service_type_id`)) ; 

我在做什麼錯?從另一個數據庫導入has and belongs to many關係的燈具的正確方法是什麼?

謝謝!

+2

我不知道太多關於這一點,但據我所知,HABTM關係需要一個ID字段。這可能是Cake爲什麼要創建一個 – JohnP 2011-04-04 17:34:31

+1

其次,每個表都有一個id列afaik。 – benjamin 2011-04-05 05:36:02

+0

@JonhP沒錯,把id字段解決了這個問題。你可以將它發佈爲答案,以便我可以將其標記爲已回覆,並且您可以獲得積分嗎?謝謝! – 2011-04-08 11:41:17

回答

1

莫羅Zadunaisky,

爲你指出service_types_technicals沒有一個id字段,我想這CakePHP的自動推導從service_types到技術面一個HABTM,因爲都是寫在複數(CakePHP的約定)名詞。如果這不是你想到的,那麼你就不得不改變表的名字以保留在約定範圍內。

1

的問題是缺少在HABTM關係表中的字段的ID,它現在固定