Laravel4存储集合

时间:2014-07-16 10:29:57

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

我的问题是如何将一组模型存储到RESTful后端 我正在使用Backbone.js,我正在考虑:

  1. 使用Async.js并行方法并在循环中单独发布/放置每个模型,然后触发一般回调方法;
  2. 将一组对象发送到后端,并使用数据库事务确保通过一次提交正确保存所有模型;
  3. 第一种方法似乎会导致很多开销,因为我必须进行不同的调用才能保存模型。

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

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

1 个答案:

答案 0 :(得分:0)

第二种方法绝对是我认为的方法,如果你将它与大量模型一起使用,它可以减少延迟并节省带宽,因为所有的HTTP内容(标题等)只会被发送一次。 / p>

在您的控制器中,使用类似的东西(它可能无效,我无法访问任何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(),如果在其中发生异常,它将回滚所有内容。