首先,我一直在使用CakePHP,並且我對API很滿意。我很肯定這將是一個臉部手掌錯誤,但我需要一些新鮮的眼睛,因爲我一直堅持了一個多小時。簡單CakePHP ActiveRecord保存問題:爲什麼該字段保存`NULL`而不是我賦值的值?
我有三種型號,User
,Job
和Company
。
Company
的hasManyUser
Company
的hasManyJob
有時,當用戶更新工作記錄,用戶需要更改作業的company_id
場。發生這種情況時,我也有要求更改用戶自己的company_id
字段。因此,User
和Job
實際上都將被重新分配給不同的公司。
在JobsController
的CRUD更新方法,我已經加入此邏輯:
$this->Job->User->read(NULL, $this->Session->read('User.id'));
$this->Job->User->set('company_id', $this->data['Job']['company_id']);
$this->Job->User->save();
我已經使用典型的調試技術驗證,像var_dump()
該$this->Session->read('User.id')
包含一個適當的值,並且$this->data['Job']['company_id']
包含正確的值,該值是從表單助手提交的。
正確User
記錄被更新,因爲modified
時間戳在表中表示,它是如此,但company_id
字段被設置爲NULL
而不是從數據陣列的正確company_id
。
有趣的是,上面的代碼後,我保存Job
記錄,並且它確實獲得與正確company_id
(使用相同$this->data
陣列)更新。
它只是$this->Job->User->save()
似乎將NULL
值傳遞到表。
<捂臉類型=「跛腳」 >
原來在應用程序流程的另一點與所述代碼monkeyed一個新的初級dev的。這個dev試圖完成同一張票,並且錯誤地執行了一個加載了NULL
數據的保存方法(後作業數據保存,這就是爲什麼我沒有注意到,因爲我工作之前作業保存.. )。
無論如何,走下SQL轉儲讓我發現錯誤,所以應該給@dhofstet指出我正確的調試路徑。感謝善良的版本控制。
< /捂臉>
你檢查生成的SQL語句? – dhofstet 2011-02-17 06:37:50
@dhofstet不!無論出於何種原因,我是一個白癡!我現在檢查一下。 – Stephen 2011-02-17 15:28:02