2017-11-23 26 views
0

私は私のデータベースにデータを保存していますが、私はこのエラーその他の関連質問を研究する引数1 ::パラメータ化()型の配列でなければなりませんが - Laravel

Type error: Argument 1 passed to >Illuminate\Database\Grammar::parameterize() must be of the type array, string given

を取得し、私はこの問題を解決しようとしましたが、まだ誰も私を助けてくれませんでした。以下は、私のコードは、作成方法は、単一のモデルを作成するためである

$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);     
     } 

}

+0

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

を交換してみてください。 $ dataが空であることを確認していますが、$データの出所をコードに表示していません。コードのどの行にエラーが表示されますか? –

+0

ところで、あなたは学生オブジェクトを間違ってフェッチしています。 Student :: all()はデータベースからすべての生徒を取り出し、後でコレクションをフィルタリングします。あなたは$ student = Student :: findOrFail($ id)とすることができます。 –

+0

@ jedrzej.kurylo、私の更新を見てください。 '$ student-> teachers() - > attach(\ App \ Teacher :: create($ dataArray) - > id);' – stackgirl

答えて

0

はあなたが関連するいくつかのコードの部分が欠けている

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

です。これは 'field' => 'value'の連想配列をとります。いくつかのネストされた配列を渡しています。

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

それぞれTeacherモデルを個別に作成する必要があります。

+0

私はエラーが逆になると思います:期待される文字列、与えられた配列。 –

+0

これ以上進んでいないと考えているのは、利用可能なコードで問題になっている問題です... moreコードはどこから来たのかを知るには良いでしょう – lagbox

+0

私のコードを更新しました。データは実際にはファイルから取得されています – stackgirl

関連する問題