如果可以将Controller的操作类型提示设置为现有模型,这将是完美的,这样就强制操作使用post方法传递的数据来实例化模型(如果post字段与模型字段匹配) 。我从asp.net MVC中知道这一点并且它很完美,但是无法找到在Laravel中做类似事情的方法。
提前谢谢
答案 0 :(得分:2)
好吧,假设你在$fillable
模型上设置User
属性,可以这样做:
class UserService
{
protected $user;
public function __construct()
{
$this->user = User::create(request()->all());
}
public function getUser()
{
return $this->user;
}
}
class UserController
{
public function store(UserService $service)
{
$user = $service->getUser();
return redirect()->route('users.show', $user);
}
}
但这是非标准的行为。我认为没有必要像这样自动创建模型,更合理的是将控制器放入控制器:
$user = User::create($request->all());
您还应该考虑的是应该填写的字段,最合理的是直接传递应该使用哪些字段,例如:
$user = User::create($request->only('name','email','password'));