我正在使用Laravel 5,我创建了一个资源控制器,设置路由并设置我的数据库模型。
我的问题是:当我执行 POST 时,我的store方法在控制器上被调用但是如何获取请求数据并在db中插入新条目而不必显式设置每个场?
这是我的代码:
public function store(Request $request)
{
$data = $request->all(); // this grabs all my request data - great!
$user = new User;
$user-> ??? // insert ALL posted data
$user->save();
}
我知道我能做到......
$user->name = $request->name;
...适用于每个领域。但有人可以告诉我如何插入一切?
我意识到我可以做一个foreach,但我想知道是否有更好的东西。
答案 0 :(得分:3)
每个模型https://laravel.com/api/5.3/Illuminate/Database/Eloquent/Model.html#method_fill都有方法fill
:
$user->fill($request->all());
最终您可以使用create
:
\User::create($request->all());
以上称为质量对齐,在Eloquents文档中有关于此的部分https://laravel.com/docs/5.1/eloquent 您需要定义可能设置的键:
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
// The attributes that are mass assignable
protected $fillable = ['name', 'login', 'birthdate'];
}