我有问题,当我尝试更新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 );
}
}
答案 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