我知道它在效率方面实际上什么都不做,但有一种简单的方法可以缩小它;
$customer = new Customer;
$customer->firstname = $data['f_name'];
$customer->lastname = $data['l_name'];
$customer->email = $data['email'];
$customer->phone_number = $data['phone'];
$customer->venue_id = Auth::user()->venue_id;
$customer->save();
只需一行代码?
我的模特真的很胖。
答案 0 :(得分:1)
您也可以使用create()
方法但不是很大的区别,例如:
$customer = Customer::create(array(
'firstname' => $data['f_name'],
'lastname' => $data['l_name'],
'email' => $data['email'],
'phone_number' => $data['phone'],
'venue_id' => Auth::user()->venue_id
));
为此,您必须在Customer
模型中指定
protected $fillable = array('firstname', 'lastname', 'email', 'phone_number', 'venue_id')
或者您可以使用相反的
// Assumed you have an id and password field
protected $guarded = array('id', 'password');
或者您可以使用空白来允许所有字段
protected $guarded = array();
因此,您可以使用模型的create()
方法进行质量分配。由于您已经有一个$data
数组已经填充了输入,但字段名称与数据库表不匹配,因此,如果您可以使用正确的数据库字段名称填充$data
变量,那么您可以使用$data
变量1 {} create()
方法中的变量。
此外,您可以直接使用Input
这样的内容:
$inputs = Input::except('_token'); // all inputs without _token hidden field
验证这些输入然后插入如下:
Customer::create($inputs);
或者,如果unset($inputs['key'])
数组中有其他值,并且想要将$_post
之前的字段删除到数据库表中,则可以使用inserting/creating
从数组中删除任何项目。阅读Mass Assignment。
答案 1 :(得分:1)
使用sheika建议的可填充数组,并确保输入参数与模型属性匹配。这就是它通常所寻找的。 p>
$model = Customer::create( Input::get() );
或者
$model = new Customer;
$model->fill( Input::get() );
$model->save();