我正在使用如下的口才更新laravel中的db记录:
($ request是一个具有我想要更新的属性的对象)
$book = Book::find($request->id)
$book->title = $request->title;
$book->author = $request->author;
$book->publisher = $request->publisher;
.
.
.
$book->something = $request->something;
$book->save();
它运行正常,但我想知道是否可以执行它而不必明确地逐个命名属性,因为$ request中的名称与模型的名称完全相同,如:
$book = $request;
$book->save();
答案 0 :(得分:0)
$book = Book::find($request->id);
$book->update($request->all());
此处有更多信息https://laravel.com/docs/5.6/queries#updates
但是,在执行此操作之前,您需要在模型上指定可填写或保护属性,因为所有Eloquent模型都会默认防止批量分配。
当用户通过请求传递意外的HTTP参数时,会发生批量分配漏洞,并且该参数会更改数据库中您不期望的列。例如,恶意用户可能会通过HTTP请求发送is_admin参数,然后将其传递到模型的创建方法中,允许用户将自己升级为管理员。
详细了解documentations。