2012-10-13 68 views
0

我有一個「生產」表,字段employee_id作爲belongsTo與employees表的關係。cakephp id約定saveField問題

問題是我的員工表使用領域emp_appserial而不是ID現場主鍵-as(員工表中沒有的每個條目獲得一個ID值,每個人都會自動增加emp_appserial)

我不知道是否有使用saveField使用多個id以外的領域去我的記錄方式:(我提到我有記錄,沒有「身份證」的值,只有emp_appserial,這是PK)

$this->loadModel('Employees'); 
    $this->Employees->id = $id; 
    $this->Employees->saveField('emp_hrnote', 'text to be saved'); 

我想使用:

$this->Employees->emp_appserial = $id; 

代替

$this->Employees->id = $id; 

我認爲是可行的?

除此之外,它可能不是太晚了重新設計我的表,但我已經有很多生產數據:-(

謝謝你的任何指針。

回答

3

以下應這樣的伎倆(順便說一句,型號應爲單數):

class Employees extends Model { 
    public $primaryKey = 'emp_appserial'; 
} 

如果不設置$primaryKey屬性,它被設置爲idSource

一旦你設置saveField()將使用該字段爲條件:Source

編輯:只是要清楚,你仍然會使用Model::$id設置主鍵值。 Model::$id持有主鍵Model::$primaryKey持有主鍵

+0

謝謝@tigrang;我正在使用'var $ primaryKey = emp_appserial;'並沒有注意到它顯然沒有效果;將其更改爲'public $ primaryKey ='emp_appserial';'如您所述,並且能夠使用'$ this-> Employee-> id = $ id提供的saveField();' –

0

使用

$this->Employee->updateAll(
      array('Employee.emp_hrnote' => "$thetxt"), 
      array('Employee.emp_appserial' => $id) 
    ); 

作爲一種解決方法是蠻好的,但是我希望我能解決我的空號的問題...會在另一篇文章中發佈另一個問題。

+0

我的答案不起作用? – tigrang

+0

是的,它的工作;這個答案我張貼了問題後發佈,注意updateAll()也有幫助。最終能夠使用saveField()使用您的答案。 –

+0

很酷,很高興你能工作:) – tigrang