preg_match()期望参数2为字符串,给定错误的数组

Dev*_*per 1 php arrays foreach laravel

我正在尝试插入数组,但出现错误:-

preg_match()期望参数2为字符串,给定数组

我的形式如下:

{!! 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']) !!}
Run Code Online (Sandbox Code Playgroud)

我的控制器存储功能:

$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);
Run Code Online (Sandbox Code Playgroud)

当我检查dd($ data)

array:2 [?
  0 => array:3 [?
    "description" => "des"
    "log_time" => ""
    "call_id" => 16
  ]
  1 => array:3 [?
    "description" => ""
    "log_time" => "hi"
    "call_id" => 16
  ]
]
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?

pat*_*cus 5

似乎您正在尝试port_logs在一个语句中插入多个。但是,该create()方法仅用于创建模型的一个实例。您要么需要使用该insert()语句,要么foreach通过更新您的代码$data并发出多个create()语句。

PortLog::insert($data);

// or

foreach($data as $row) {
    PortLog::create($row);
}
Run Code Online (Sandbox Code Playgroud)

如果您只想插入数据,而又不想PortLog实例化一堆实例,那么该insert()方法就是您的理想之选。如果您需要PortLog为每一行实例化一个新实例,则该create()方法是正确的方法。