我正在尝试在当前表中保存数据后更新关联表中的行。假设我有两个表,列表和队列。队列具有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'
]);
答案 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);
非常简单。