The Eloquent
model has encapsulated the attributes of the object. So you can only alter/set them through the set
($model->attribute
) or the fill(array $attributes)
method. All the Eloquent methods that mass assign the attributes is using the method fill()
.
So there are 2 ways to insert new Eloquent based models with an array in the database, one that uses the fill()
method and one that doens't.
Method 1: Mass assignment
Add the attribute protected $fillable = [ 'column_a', 'column_b', .. ];
to your model. Then you can use the mass assignment like this.
$Plan = new Plans;
$Plan->fill( $array );
$Plan->save();
Or you can use:
$plan = Plans::create( $array );
Method 2: QueryBuilder::insert( array )
If you don't have any boot
methods registered on creating
and created
(DB won't trigger these) then you also can use the QueryBuilder
to insert the rows in the database.
// insert one plan
DB::table('plans')->insert([ $array ]);
$plan = Plans::find( DB::getPdo()->lastInsertId() );
// insert multiple plans in one query
$plans = [ $plan_a_arr, $plan_b_arr, .. ];
DB::table('plans')->insert( $plans );
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…