2016-08-26 6 views
0

であることを期待します私のコントローラストア機能:するpreg_match()は、私は、配列を挿入しようとしているが、私はエラーを取得していますパラメータ2は、文字列、配列を指定して、エラー

$this->validate($request, $this->rules); 
     $data = array(); 
     foreach($request->description as $key=>$value){ 
      $data[]=[ 
       'description'=> $value, 
     'log_time'=> $request->log_time[$key], 
     'call_id'=>$call->id, 
      ]; 
     } 
     PortLog::create($data); 

私はDD($データ)をチェック

array:2 [▼ 
    0 => array:3 [▼ 
    "description" => "des" 
    "log_time" => "" 
    "call_id" => 16 
    ] 
    1 => array:3 [▼ 
    "description" => "" 
    "log_time" => "hi" 
    "call_id" => 16 
    ] 
] 

ここで何が間違っているのですか?

+1

単一のインスタンスを使用して、各ユース挿入のための後のモデル

if (count($bureaus) > 0) { foreach ($bureaus as $bureau) { $insertArr[]=array( 'sub_id'=>$data['sub_id], 'account_number'=>$data['roll_number'], 'status'=>$data['status'], 'bureau'=>$bureau, 'type'=>$data['type'] ); } 

の1つのインスタンスを作成するためのものです。 'preg_match()'(これはあなたのコードにあります)が適切な文字列引数を与えられていません。あなたのコードのこの部分には私が見ることができる 'preg_match()'はありませんので、このコードは問題に関連していないようです。 – Rasclatt

+0

@そのエラーは不正な文字列ではない – Developer

+0

はい、申し訳ありませんが、私はその時私のコメントを削除していましたが、インターネットの問題のため削除されません。 –

答えて

4

複数のport_logsを1つのステートメントに挿入しようとしているようです。しかし、create()メソッドは、モデルのインスタンスを1つだけ作成することを目的としています。 ステートメントを使用するか、$dataを通じてコードをforeachに更新し、複数のcreate()ステートメントを発行する必要があります。

PortLog::insert($data); 

// or 

foreach($data as $row) { 
    PortLog::create($row); 
} 

あなただけのデータを挿入したい、とあなたはPortLogインスタンスの束をinstanteしたくない場合は、insert()方法は、移動するための方法です。各行に新しいPortLogインスタンスをインスタンス化する必要がある場合は、create()メソッドを使用します。

-1

複数のport_logを1つのステートメントに挿入しようとしています。しかし、create()メソッドは、唯一のエラーがあなたを語っている

Student::insert($insertArr); 
関連する問題