是否可以将模型传递给 Laravel 的操作并使用匹配的 post 数据自动实例化它?
Is it possible to pass model to Laravel's action and automatically instatiate it with matching post data?
如果可以将 Controller 操作的类型提示设置为现有模型,这样就可以强制操作使用 post 方法传递的数据来实例化模型(如果 post字段匹配模型字段)。我从 asp.net MVC 知道这一点并且它工作完美但找不到在 Laravel.
中做类似事情的方法
提前致谢
好吧,假设您在 User
模型上设置 $fillable
属性,它可以按照如下方式完成:
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'));
如果可以将 Controller 操作的类型提示设置为现有模型,这样就可以强制操作使用 post 方法传递的数据来实例化模型(如果 post字段匹配模型字段)。我从 asp.net MVC 知道这一点并且它工作完美但找不到在 Laravel.
中做类似事情的方法提前致谢
好吧,假设您在 User
模型上设置 $fillable
属性,它可以按照如下方式完成:
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'));