php - Yii2:Restful API 创建和更新关系

标签 php rest yii2

我的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/

相关文章:

php - 如何根据在 PHP 中一次选中的多个复选框从 SQLite 3 数据库中检索值?

php - Wordpress:在管理页面上,图标未通过 https 加载

php - 使用 PHP 从 AndroidManifest.xml 中提取数据

postgresql - DefaultServeMux 中的 SQL 给出错误

java - JAVA中的Microsoft Office 365邮件REST API

php - Yii2 kartik select2 小部件也显示值问题

php - 使用 amazon s3 的 fineuploader 时收到无效的策略文档或请求 header 错误

javascript - 使用 ember-upload 上传文件,如何用服务堆栈的附加数据填充请求?

php - 我如何在 Yii2 中处理多对多关系

php - Yii2 异常 'yii\db\Exception' 消息 'could not find driver'