在Cakephp updateAll方面需要帮助

时间:2011-09-08 15:38:56

标签: cakephp

我需要使用updateall来更新小部件的位置和列

   if  (!empty($column3[0])) {
            $column = preg_split("/,/", $column3[0]);
            $name = $column[2];
            switch ($name) {
      case 'My Profile':
                    $table = 'WidgetProfile';
               break;
                case 'My script':
                    $table = 'WidgetScript';
                    break;
                case 'My Setting':
                    $table = 'WidgetSetting';
                    break;
                case 'Upload Script':
                    $table = 'WidgetUpload';
                    break;
                case 'My message':
                    $table = 'WidgetMessages';
                    break;
                default :
                    echo "Error3 0";
            }
            $this->loadModel($table);
            $row = $this->$table->find('count',array('conditions'=>array('user_id'=>'$id));
            if($row==0){
            $this->$table->set(array('column',=> 3, 'position' => 1,'user_id'=>$id));
            $this->$table->save();
             }else{
             $this->$table->updateAll(**?????????????**);

        }

如何使用updateAll

1 个答案:

答案 0 :(得分:1)

从问题中你想要做什么并不是很清楚,但看起来你正在尝试更新现有记录,或者如果还没有记录,则创建一个记录。你可以使用Model::save()。如果设置了模型的id,它将更新,否则它将插入一个新行。

$row = $this->$table->find(
    'first',
    array(
        'conditions' => array( 'user_id'=> $id ),
        'fields' => "$table.id",
        'recursive' => -1
    )
);

if( !empty( $row ) ) {
    $this->$table->id = $row[ $table ][ 'id' ];
}

$this->$table->save( array('column' => 3, 'position' => 1, 'user_id'=> $id ) );