Laravel用雄辩的话插入db

时间:2019-01-31 11:59:57

标签: laravel eloquent

我正在尝试使用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

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

这个正在工作