Laravel预先创建create方法只会添加一条记录

时间:2016-08-01 19:57:37

标签: javascript laravel eloquent

我在Laravel框架中遇到了我的组织的麻烦。

我的商店方法是这样的:

public function store(ProfileUpdateRequest $request, $id) {
    $organizations = Input::only('organization');

    foreach($organizations as $id) {
        $data = array(
            'organization_id' => $id,
            'user_id' => Auth::user()->id
        );

        Organization_User::create($data);
    }
}

HTML就像这样:

<select class="select-icons" tabindex="-1" name="organization"></select>

我使用select2 4. *来获取组织到现场的记录。

$('.select-icons').select2({
    multiple: true,
    minimumResultsForSearch: "-1",
    ajax: {
        url: '/api/v1/allorganizations',
        dataType: "json",
        type: "GET",
        data: function (params) {

            var queryParameters = {
                term: params.term
            }
            return queryParameters;
        },
        processResults: function (data) {
            return {
                results: $.map(data, function (organization) {
                    return {
                        text: organization.name,
                        id: organization.id
                    }
                })
            };
        }
    },
    formatResult: iconFormat,
    minimumResultsForSearch: "-1",
    width: '100%',
    formatSelection: iconFormat,
    escapeMarkup: function(m) { return m; }
});

问题是,无论我添加多少记录,它都只会添加一条记录(我首先选择的记录)。我该怎么办,自昨晚以来我一直在努力。 :d

1 个答案:

答案 0 :(得分:0)

这里需要进行一些重构,以使这更多一点&#34; Laravely&#34;

collect($request->only('organization'))->each(function($id, $index) {
    Organization_User::create([
        'organization_id' => $id,
        'user_id' => auth()->user()->id
    ]);
});

通过这种方式,您可以循环来自请求的结果。然后,我们将从$request->only('organization')实例化一个集合,这将允许我们链接->each()方法,返回组织的$id,以及它在数组中的位置为由$index表示。

我们使用auth()而不是Auth::,因为Auth::将来会改变其他内容,至少我们可以希望auth()帮助者不会#39;吨