传递给Illuminate \ Database \ Grammar :: parameterize()的参数1必须是类型数组 - Laravel

时间:2017-11-23 05:55:42

标签: php laravel laravel-5 eloquent

我将数据保存到我的数据库中,但是我收到此错误

  

类型错误:参数1传递给> Illuminate \ Database \ Grammar :: parameterize()必须是数组类型,给定字符串

研究其他相关问题,我试图解决这个问题,但他们都没有帮助过我。以下是我的代码

  $student = Student::findOrFail($id)
  if($request->file('imported-file'))
     {
         $path = $request->file('imported-file')->getRealPath();
         $data = Excel::load($path, function($reader)
     {
         })->get();

        if(!empty($data) && $data->count())
       {
         foreach ($data->toArray() as $row)
         {
           if(!empty($row))
           {
             $dataArray[] =
             [
               'name' => $row['name'],
               'grade' => $row['grade'],
               'age' => $row['age'],
               'parent' => $row['parent'],



             ];
           }
       }

       if(!empty($dataArray))
       {
        $student->teachers()->attach(\App\Teacher::create($dataArray)->id);                   
        }

}

2 个答案:

答案 0 :(得分:0)

create方法用于创建单个模型。它需要一个' field'的关联数组。 => '值&#39 ;.您正在向它传递一些嵌套数组。

Model::create(['field' => 'value', 'anotherfield' => 'anothervalue']);

您必须单独创建每个Teacher模型。

答案 1 :(得分:0)

尝试替换

$student->teachers()->attach(\App\Teacher::create($dataArray)->id);   

$student->teachers()->createMany($dataArray);