如何在CakePHP中更新多个记录的单个字段?
我使用检索多个记录$this->Item->find('all'),我需要为每个记录设置不同的值并保存.我做
$items = $this->Item->find('all', array(
'fields' => array('Item.id', 'Item.order'),
'conditions'=> array(
'Item.project_id =' => $this->request->params['project_id'],
),
'order' => array ('Item.order ASC')
));
foreach($items as $key => $item) {
$item->saveField('Item.order', rand(1, 10));
}
Run Code Online (Sandbox Code Playgroud)
但它引起了一个错误的说法
致命错误:在非对象上调用成员函数saveField()
我究竟做错了什么?
hug*_*pos 18
我会说你应该使用CakePHP Save Many来提高性能.
例如:
$data = array(
array( 'Item' => array('id' => 2, 'order' => rand(1,5)) ),
array( 'Item' => array('id' => 3, 'order' => rand(1,5)) ),
);
$Model->saveMany($data, array('deep' => true));
Run Code Online (Sandbox Code Playgroud)
更新:请注意,这是CakePHP 1.3的旧答案.对于现代方法,请参阅下面的答案.
试试这个
foreach($items as $key => $item) {
$this->Item->id = $item['Item']['id'];
$this->Item->saveField('order', rand(1, 10));
}
Run Code Online (Sandbox Code Playgroud)