2016-08-26 4 views
0

Ich versuche Array einfügen, aber ich bin immer Fehler: -preg_match() erwartet Parameter 2 String Array gegeben Fehler sein

preg_match() expects parameter 2 to be string, array given

Meine untenstehende Formular aus wie:

{!! Form::text('description[]',null,['class' => 'input-field input-sm','v-model'=>'row.description']) !!} 
{!! Form::text('log_time[]',null,['class' => 'input-field input-sm','v-model'=>'row.log_time']) !!} 

Mein Controller Speicherfunktion:

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

wenn ich überprüfen dd ($ data)

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

hier was mache ich falsch?

+1

Der Fehler

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'] ); } 

Nach jedem Gebrauch Einsatz zu erzeugen sagt. 'preg_match()' (wo immer das in Ihrem Code ist) wird nicht das richtige String-Argument gegeben. Dieser Teil Ihres Codes hat keine 'preg_match()', die ich sehen kann, daher scheint dieser Code nicht relevant für das Problem zu sein. – Rasclatt

+0

@Anant nicht sein Fehler illegale Zeichenfolge – Developer

+0

ja Entschuldigung mein Schlechter, ich löschte meinen Kommentar zu dieser Zeit, aber wegen Internet-Problem ist es nicht gelöscht. –

Antwort

4

Es sieht so aus, als ob Sie versuchen, mehrere port_logs in einer Anweisung einzufügen. Die Methode create() soll jedoch nur eine Instanz eines Modells erstellen. Sie müssen entweder die insert()-Anweisung verwenden oder Ihren Code unter foreach über Ihre $data aktualisieren und mehrere create()-Anweisungen ausgeben.

PortLog::insert($data); 

// or 

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

Wenn Sie nur die Daten einfügen wollen, und Sie wollen nicht ein Bündel von PortLog Instanzen instante, dann ist die insert() Methode ist der Weg zu gehen. Wenn Sie für jede Zeile eine neue PortLog-Instanz instanziieren müssen, ist die create()-Methode der richtige Weg.

-1

Sie versuchen, mehrere port_logs in eine Anweisung einzufügen. Jedoch wird die create() Methode nur bedeutete eine Instanz eines Modells einzelne Instanz mit

Student::insert($insertArr); 
Verwandte Themen