更新CakePHP中除null行之外的更新

时间:2014-07-24 14:16:00

标签: cakephp

我有问题,当我尝试更新CakePHP中除null行之外的其他内容。



模型 - >点

列 - >的姓名,地址

[MySQL的]

id / name / address

1 / Shibuya Bakery / Shibuya street 123



例如,有一个类似上面的数据库。

然后CakePHP从Android获得了一个名称值(Shibuya Cake Shop),地址值为null。

因此,我想更新名称列。

id = 1(来自Android发布)

public function update()
{
    if( isset($this->request->data["id"]) )
    {
        $id = intval($this->request->data["id"]);
        $fields = array( 'Spot.id' => $id );

        $data = array(  'Spot.name'     => "'".$this->request->data["name"]."'",
                        "Spot.address"      => "'".$this->request->data["address"]."'");
        $this->Spot->updateAll( $data,$fields );
    }
}

1 个答案:

答案 0 :(得分:0)

如果您只想更新一个字段,只需使用saveField。

$this->Spot->id = $this->request->data['id'];
$this->Spot->saveField('name', $this->request->data['name']);

不要使用updateAll,因为这意味着更新多个记录,但从技术上讲,您可以添加条件以防止它这样做。您还将错误的参数传递给updateAll。 (有关正确的方法,请参阅http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-updateall-array-fields-mixed-conditions。)如果要在单个记录上一次更新多个字段,请使用save:

public function update()
{
    if( isset($this->request->data["id"]) )
    {
        $fields = array('name');
        if(!empty($this->request->data['address'])) array_push($fields, 'address');
        $this->Spot->save($this->request->data, true, $fields);
     }
 }

详细了解保存:http://book.cakephp.org/2.0/en/models/saving-your-data.html#saving-your-data