更新另一个表cakephp中的相关行3

时间:2016-09-23 12:15:38

标签: php cakephp relationship cakephp-3.0

我正在尝试在当前表中保存数据后更新关联表中的行。假设我有两个表,列表和队列。队列具有listing_id的外键。所以我成功保存了一个新队列,当然还包括列表的id,如何更新列表上的列表的状态字段,比如从“暂停”到“排队”?

查看我的代码如何

$queue = $this->Queues->newEntity();
$queue->listing_id = $this->request->data['id'];
$queue->user_id = $this->Auth->user('id');

if ($this->Queues->save($queue)) {      

    $this->response->body("success");

    $this->redirect(array('controller'=>'ListingsController','action' => 'changeStatus', $this->request->data['id'], "queued"));

}   

协会

清单表

    $this->table('listings');
    $this->displayField('name');
    $this->primaryKey('id');

    $this->addBehavior('Timestamp');

    $this->belongsTo('Users', [
        'foreignKey' => 'user_id',
        'joinType' => 'INNER'
    ]);

队列表

    $this->table('queues');
    $this->displayField('id');
    $this->primaryKey('id');

    $this->belongsTo('Listings', [
        'foreignKey' => 'listing_id',
        'joinType' => 'INNER'
    ]);
    $this->belongsTo('Users', [
        'foreignKey' => 'user_id',
        'joinType' => 'INNER'
    ]);

1 个答案:

答案 0 :(得分:0)

这就是诀窍:$ this-> loadModel(' Listings');

然后从那里我可以使用查询中的WHERE子句对Listings对象执行 - > newEntity(), - > patchEntity()和/或 - > save(),就像我在清单控制器。

E.g:

$this->loadModel('Listings');
$listing = $this->Listings->get($id);
$listing->status = "completed";
$this->Listings->save($listing);

非常简单。