cakephp使用updateAll的正确数组

cakephp使用updateAll的正确数组,cakephp,Cakephp,我使用的是CakePHP2.5,我有一个数组,我希望在页面模型中一次更新许多记录。我似乎无法获得正确的数组格式。我得到一个错误: 注意(8):未定义索引:newOrder[APP/Controller/PagesController.php,第133行] $newOrder = array( 'Page' => array( 0 => array( 'id' => 3, 'o

我使用的是CakePHP2.5,我有一个数组,我希望在页面模型中一次更新许多记录。我似乎无法获得正确的数组格式。我得到一个错误:

注意(8):未定义索引:newOrder[APP/Controller/PagesController.php,第133行]

$newOrder = array(
        'Page' => array(
            0 => array(
                'id' => 3,
                'order' => 0),
            1 => array(
                'id' => 4,
                'order' => 0),
            2 => array(
                'id' => 7,
                'order' => 0
            )
));
$this->Page->updateAll($newOrder);
我认为我缺少的一个部分是使用“数据”作为数组的一部分。但我不知道该把它放在哪里

我也尝试过:

$this->Page->updateAll($newOrder['Page']);

您应该使用saveMany来满足您的需求。请参阅下面的解释-

updateAll

updateAll(数组$字段,数组$条件)-用于基于一个条件或多个条件更新具有相同值的一个或多个记录。例如:如果要更新所有页面并将其全部设置为order=0,则可以使用updateAll,而无需传递主键-

$this->Page->updateAll(
    array('Page.order' => 0)
);
如果您想根据某个条件更新某些页面,您将执行以下操作-

$this->Page->updateAll(
    array('Page.order' => 0),
    array('Page.type' => 'PROMOTED')
);
假设您的页面模型中有一个类型字段,上述查询将为所有类型为“已升级”的页面设置顺序0

参考-

saveMany

现在,如果要使用要在数组中创建的特定值更新某些特定记录,则应使用saveMany(array$data=null,array$options=array())

若要使用数据数组保存/更新多个记录,应首先以以下格式创建数据数组-

$data = array(
 array('Page' => array('id' => 1, 'order' => 0)),
 array('Page' => array('id' => 2, 'order' => 0)),
 array('Page' => array('id' => 3, 'order' => 0))
);
$this->Page->saveMany($data);
现在,您可以使用saveMany以0的顺序更新具有给定id(主键)的三条记录。注意:如果不在数组中传递主键,即id,saveMany将只为给定数组创建新记录


Ref-

您应该根据需要使用saveMany。请参阅下面的解释-

updateAll

updateAll(数组$字段,数组$条件)-用于基于一个条件或多个条件更新具有相同值的一个或多个记录。例如:如果要更新所有页面并将其全部设置为order=0,则可以使用updateAll,而无需传递主键-

$this->Page->updateAll(
    array('Page.order' => 0)
);
如果您想根据某个条件更新某些页面,您将执行以下操作-

$this->Page->updateAll(
    array('Page.order' => 0),
    array('Page.type' => 'PROMOTED')
);
假设您的页面模型中有一个类型字段,上述查询将为所有类型为“已升级”的页面设置顺序0

参考-

saveMany

现在,如果要使用要在数组中创建的特定值更新某些特定记录,则应使用saveMany(array$data=null,array$options=array())

若要使用数据数组保存/更新多个记录,应首先以以下格式创建数据数组-

$data = array(
 array('Page' => array('id' => 1, 'order' => 0)),
 array('Page' => array('id' => 2, 'order' => 0)),
 array('Page' => array('id' => 3, 'order' => 0))
);
$this->Page->saveMany($data);
现在,您可以使用saveMany以0的顺序更新具有给定id(主键)的三条记录。注意:如果不在数组中传递主键,即id,saveMany将只为给定数组创建新记录

参考-