【问题标题】:Laravel4 storing a collectionLaravel4 存储一个集合
【发布时间】:2014-07-17 03:08:13
【问题描述】:

我的问题是关于如何将模型集合存储到 RESTful 后端。
我正在使用 Backbone.js,我正在考虑:

  1. 使用Async.js并行方法,将每个模型分别post/put循环,之后触发通用回调方法;
  2. 将对象集合发送到后端,并使用数据库事务确保通过一次提交正确保存所有模型;

第一种方法似乎会造成很多开销,因为我必须进行不同的调用来保存模型。

但是在考虑第二种方法时,Laravel4 默认情况下不允许对集合执行 post/put。

您更喜欢哪种方法,更重要的是,为什么?

【问题讨论】:

    标签: backbone.js laravel-4 async.js


    【解决方案1】:

    在我看来,第二种方法绝对是要走的路,如果您将它与大量模型一起使用,它会减少延迟并节省带宽,因为所有 HTTP 内容(标头等)只会发送一次。

    在你的控制器中,使用这样的东西(它可能不起作用,我无权访问任何 Laravel 安装来测试它):

    public function postCollection() {
        $collection = Input::get("collection");
    
        DB::transaction(function() {
            foreach ($collection as $data) {
                // In this example we assume it's a collection of users
                // Of course in a real app you would also do input validation
                $user = User::create(["name" => $data->name, "email" => $data->email]);
            }
        })
    
        // Example success response, will be automatically serialized to JSON
        return ["status" => "success"];
    }
    

    这将遍历 JSON 输入的 collection 元素,该元素应该是模型列表。然后它显然应该做验证和可能的其他事情。整个循环被包裹在一个DB::transaction() 中,如果其中发生异常,它将回滚所有内容。

    【讨论】:

    • 我也有同样的想法。我不确定这种方法是否尊重 REST 的架构风格概念。无论如何我接受这个答案,谢谢你的帮助!
    • @KimGysen 通过使用 PUT 请求,我认为它符合 REST。
    猜你喜欢
    • 1970-01-01
    • 2015-05-29
    • 2017-03-16
    • 1970-01-01
    • 2021-05-14
    • 2021-05-22
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多