2012-10-13 32 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