我的RESTful API 需要存储来自 JSON POST/PUT 请求的关系数据:
Address-table 通过表 addresscategory_assignment 有很多类别:
public function getAddresscategories()
{
return $this->hasMany(TblAddresscategory::className(), ['id' => 'addresscategory_id'])
->viaTable('tbl_addresscategory_assignment', ['address_id' => 'id']);
}
读取和保存关系数据的最佳方式是什么?
Yii2 仅在 GET 请求中支持关系 REST,在 POST/PUT 中不支持。
通过 REST PUT 传入的 Address-JSON:
{
"id": 1,
"name": "Miller",
"addresscategories": [
{
"id": 9,
"categories": "customer"
},
{
"id": 10,
"gruppe": "reseller"
}
]
}
addresscategorys已经存在,我只需要读取关系并将它们存储到tbl_addresscategory_assignment
最佳答案
一种方法是将 EVENT_AFTER_INSERT 的事件记录事件附加到要在其上创建新条目的模型。然后,从post/put中插入数据后,就可以根据刚刚插入的模型的ID创建赋值关系了。
事件允许您在不破坏内置 REST url 结构的情况下处理数据
这是一个不知道表结构的快速示例...
public function init()
{
$this->on(ActiveRecord::EVENT_AFTER_INSERT, function ($event) {
// Category ID just created
$firstid = $event->sender->id;
// Whatever the second ID is
$secondid = 999;
$assignment = new CategoryAssignment;
$assignment->setAttribute('firstid', $firstid);
$assignment->setAttribute('secondid', $secondid);
$assignment->save();
}
}
关于php - Yii2:Restful API 创建和更新关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26908131/