具有具有键和值 的数组。键名与数据库列名相同。
索引中的键总数大于 50。
所以,不可能像这样一键保存数据
$user = new User; $user->name = 'John'; .......... ....... .......so on $user->save();
示例数组:
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();
注意: 我知道填充不起作用,因为它没有在该模型的可填充变量中定义
最佳答案
Eloquent
模型已经封装了对象的属性。所以你只能通过 set
改变/设置它们( $model->attribute
) 或 fill(array $attributes)
方法。所有批量分配属性的 Eloquent 方法都使用方法 fill()
.
所以有两种方法可以在数据库中插入带有数组的新的基于 Eloquent 的模型,一种使用 fill()
方法和一种方法。
方法一:批量赋值
添加属性protected $fillable = [ 'column_a', 'column_b', .. ];
到你的模型。然后你可以像这样使用质量赋值。
$Plan = new Plans;
$Plan->fill( $array );
$Plan->save();
或者你可以使用:
$plan = Plans::create( $array );
方法二:QueryBuilder::insert(array)
如果您没有任何 boot
在 creating
上注册的方法和 created
(数据库不会触发这些)然后你也可以使用 QueryBuilder
在数据库中插入行。
// 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 );
关于php - Laravel 5 数组, key 保存在模型中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34411465/