2016-08-01 103 views
0

我在Laravel框架中遇到了问题。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>

我使用的是选择2 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

+0

在您的 Ohgodwhy

+0

当我这样做后,我得到一个错误:类型错误:参数1传递给Illuminate \ Database \ Grammar :: parameterize()必须是类型数组,给定的整数,调用 – Ventilaator

回答

0

这里有点重构,使这个多一点“Laravely”

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::

+0

我修改了一下代码,它是'Organization_User'模型,而不是'Organization',而列是'organization_id',而不是'organization'但可悲的是,这也不起作用。现在我收到错误'调用成员函数each()array# – Ventilaator

+0

@Ventilaator看看上面的编辑。应该为你更好地工作。 – Ohgodwhy