CakePHP更新问题(重复条目)

时间:2013-12-01 10:18:20

标签: php cakephp

我无法更新cake php中的多个字段。

这是$ product

array(
'sku' => '45',
'name' => 'fefefef22',
'short_description' => '99',
'long_description' => '33',
'price' => '444',
'special_price' => '444',
'stock' => '444',
'brand' => '4',
'is_promo' => '0'

my controller
public function update($sku)
{
    $this->autoRender = false;
    $this->layout = false;
    if($this->request->data) {
        $this->Product->sku = $sku;
        $product = $this->request->data['Product'];
        $this->Product->save($product);
    }
}

错误消息

1062键'PRIMARY'重复输入'45';

我尝试过很多其他动作,但仍然是同样的信息。

THX

1 个答案:

答案 0 :(得分:1)

改变这个:

$this->Product->sku = $sku;

对此:

$this->Product->id = $sku;

->id部分未设置名为“id”的字段 - 它正在设置主键。因此,在您的情况下,将->id设置为$sku实际上是在告诉您希望字段“sku”的值为该值。

使用->sku时,模型不知道您要设置的内容。

->id指的是模型中的$id,如CakePHP Model.php中的代码所示:

/**
 * Value of the primary key ID of the record that this model is
 * currently pointing to.
 * Automatically set after database insertions.
 *
 * @var mixed
 */
public $id = false;

这是假设您按照book's example在模型中正确设置primaryKey:

public $primaryKey = 'sku';