我正在尝试使用laravel db方法插入数据库,我可以使用以下代码插入数组:
if(!empty($data) && $data->count()){
foreach ($data as $key => $value) {
$insert[] = [
'Number' => $value->number,
'Full_Name' => $value->full_name,
'Type' => $value->type,
'Email' => $value->email,
];
}
if(!empty($insert)){
$insertData = DB::table('import')->insert($insert);
if ($insertData) {
Session::flash('success', 'Your Data has successfully imported');
}else {
Session::flash('error', 'Error inserting the data..');
return back();
}
}
}
在这里我可以使用insert数组插入值,但是我想使用雄辩的create方法插入值,
$insertData = Import::create($insert);
我想使用这种方法:
firstOrNew
我该如何使用雄辩的方法来插入db,如果有任何重复,它将引发错误。
导入型号代码:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Import extends Model
{
protected $table = 'imports';
protected $fillable = [
'id',
'Number',
'Full_Name',
'Type',
'Email',
'created_at',
'updated_at'
];
}
我正在使用laravel 5.2
答案 0 :(得分:0)
您可以使用firstOrCreate来避免重复,第一个参数将用于查找记录,第二个将用于新记录,而不用于搜索
$import= Import::firstOrCreate([
'email' => 'email@email.com'
], [
'Full_Name' => 'Nilay Singh',
'Type' => 'Type'
]);
答案 1 :(得分:0)
我使用alexkb注释解决了该问题,我正在使用以下代码:
array_walk($insert, function($import) { Import::create($import); })
这个正在工作