2013-03-20 41 views
1

(編者)CakePHP2在add.ctp

張貼空在我的http://host/MyCake/index.php/table/add,有10個輸入(場),當提交一個表單,我有

Error: SQLSTATE[23502]: Not null violation: 7 
    ERROR: null value in column "revista_id" violates not-null constraint 
SQL Query: 
    INSERT INTO "fasciculos" ("created", "modified", "user_id") VALUES ('now()', 'now()', 1) 

好了,關於 「非空違反」 (字段revista_id)我嘗試使用ALTER COLUMN revista_id DROP NOT NULL更改SQL(刪除約束條件),然後更改就可以了,它會運行!但是,問題是:* 其中SQL INSERT的其他10個字段? !!

是的,當我改變時,submited數據記錄是空的,所有10個字段都是NULL。


我使用的是PostgreSQL 9.X.

我也的var_dump檢查在FasciculoController如果公佈的數據在那裏,是的,它是存在的,

public function add() { 
    if ($this->request->is('post')) { 
     $this->Fasciculo->create(); 
     var_dump($this->request->data); // showing below 
     if ($this->Fasciculo->save($this->request->data)) // bug here! 
        ... 
      }... 
    ...} 

的vardump都POST數據,

array(1) { 
    ["Fasciculos"]=>array(11) { 
     ["other_id"]=> string(3) "540" 
     //... all data here ... 
    } 
    } 
+0

不要你的任何其他控制器的'加()'職能的工作? – summea 2013-03-20 17:11:55

+0

我不知道'Table'這個名字是否在這裏引起了一些保留字的問題......但是我似乎無法找到CakePHP API中使用的'Table'......這有點奇怪,使用但是,對於SQL中的實際「表」,單詞「table」是正確的? – summea 2013-03-20 17:14:47

+0

@summea,關於第一個問題,是的,它的確如此。關於第二:對不起,我更改了原始名稱,它是一個有效的名稱,適用於所有應用程序(SQL和Cake)。 – 2013-03-20 18:46:17

回答

0

TABLE是MySQL/PostgreSQL中的保留關鍵字和保留關鍵字,我認爲數據庫可能會被SQL的INSERT INTO table ...部分困惑。

可能還有其他的事情發生在這裏,但嘗試重命名您的Table模型和控制器可能是個好主意。 (與製作到模型的重大變化等時一定要清除CakePHP的緩存文件)

見:MySQL reserved keywordsPostgreSQL reserved keywords

+0

對不起,正如我上面評論的「...我改變了原來的名字,它是一個有效的名字,適用於所有應用程序(SQL和Cake)」。 – 2013-03-20 18:48:40

+0

@PeterKrauss再次感謝您的更新。我還對此有了另一個想法:在更改了模型和控制器的名稱之後,您是否確保爲CakePHP項目清除緩存?有時緩存會保留你的舊型號名稱......最後的型號名稱可能與前面討論的保留關鍵字「TABLE」衝突。如果嘗試刪除CakePHP的'cache'文件會發生什麼? – summea 2013-03-20 19:19:34

+1

naver的名稱改變了,只有第一次編輯是一個簡化,現在我顯示了一個確切的轉儲...我只改變了非空,這是好的,沒有緩存。我沒有版本,另一個人嘗試了相同的結果......好吧,謝謝你的支持。 – 2013-03-21 01:40:45