是否可以将模型传递给Laravel的动作并使用匹配的帖子数据自动实例化?

时间:2017-11-11 10:41:28

标签: laravel laravel-5 eloquent laravel-5.5

如果可以将Controller的操作类型提示设置为现有模型,这将是完美的,这样就强制操作使用post方法传递的数据来实例化模型(如果post字段与模型字段匹配) 。我从asp.net MVC中知道这一点并且它很完美,但是无法找到在Laravel中做类似事情的方法。

提前谢谢

1 个答案:

答案 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'));