Have array which have key & value. The keys name are same database columns name.
Total of keys in an index is greater than 50.
So,not possible to save data one by one key like
$user = new User; $user->name = 'John'; .......... ....... .......so on $user->save();
Sample array:
Array ( [name] => 'Amit', [age] => 25, [field1] => 'val1', .... [field33] => 'how' , .... [field54] => 'sumit' )
Now, my question is that how can i save data in an model using easiest process.
Info:
- Using laravel 5
Try:
$Plan=new Plans;
$Plan->fill( $array);
$Plan->save();
Note: I know that fill not working as it not defined at fillable variable of that model
I don't understand why you don't want to define the database columns/array keys in
$fillable
attribute of your model, as it is a just a one-time task and then you would be able to do this simply:Another way, if you have all the data in an associative array with keys matching to the columns in DB table, which you do, is to use a foreach loop:
The
Eloquent
model has encapsulated the attributes of the object. So you can only alter/set them through theset
($model->attribute
) or thefill(array $attributes)
method. All the Eloquent methods that mass assign the attributes is using the methodfill()
.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.Or you can use:
Method 2: QueryBuilder::insert( array )
If you don't have any
boot
methods registered oncreating
andcreated
(DB won't trigger these) then you also can use theQueryBuilder
to insert the rows in the database.