Cakephp Querybuilder:使用与所选字段相同的字段更新行

时间:2017-06-27 15:02:23

标签: mysql cakephp query-builder

我的应用程序的目标是通过特许经营计划其特许经营权。 总部安排一个特定日期和时间的帖子,包括文本和潜在图像。 它为数据库中的每个特许经营(id,franchise_id,user_id,text,image,network,post_id)创建包含所有必要信息的帖子

post_id包含除了franchise_id之外完全相同的每一行的id。

当我添加帖子时,效果很好。但是在编辑时,因为它获得了帖子的ID,所以它只会编辑与id匹配的帖子。 当它是特许经营时,这很好,然后它会将post_id更改为自定义值,并且将独立于其他值。

但是当它是HQ(superadmin)登录时,我希望他通过post_id编辑与所选匹配项匹配的所有内容。

查询构建器不是我习惯的东西,有时候我会考虑将它放到标准SQL中,但是如果它存在,那是有原因的,所以我希望你帮助解决这个问题,使用Cakephp的查询构建器。

public function edit($id = null){

    $event = $this->Events->get($id);

    if ($this->request->is(['post', 'put'])) {
        $event = $this->Events->patchEntity($event, $this->request->data,['associated' => ['Networks'], ]);
        if($isuper == 'true'){//if logged in user is superadmin

        }else{
        $event->user_id = $this->Auth->user('id');
        }


        if ($this->Events->save($event)) {



            $this->Flash->success(__('your post has been updated'));
            return $this->redirect(
                [
                    'action' => 'index',
                    date('Y', $event->date->getTimestamp()),
                    date('m', $event->date->getTimestamp()),
                    $event->company_id
                ]
            );
        }
        $this->Flash->error(__('unable to update your post'));
    }
    $this->set('event', $event);
    $this->layout = 'ajax';
}

1 个答案:

答案 0 :(得分:2)

您可以尝试使用updateAll

进行批量更新

类似的东西:

{{1}}