是否可以将模型传递给Laravel';s操作,并使用匹配的post数据自动恢复?

是否可以将模型传递给Laravel';s操作,并使用匹配的post数据自动恢复?,laravel,laravel-5,eloquent,laravel-5.5,Laravel,Laravel 5,Eloquent,Laravel 5.5,如果可以将控制器操作的类型提示设置为现有模型,并通过这种方式强制操作使用post方法传递的数据来恢复模型(如果post字段与模型字段匹配),那么这将是完美的。我从asp.NETMVC知道这一点,它工作得非常完美,但在Laravel中找不到类似的方法 提前感谢您好吧,假设您在用户模型上设置了$filleble属性,可以这样做: class UserService { protected $user; public function __construct() {

如果可以将控制器操作的类型提示设置为现有模型,并通过这种方式强制操作使用post方法传递的数据来恢复模型(如果post字段与模型字段匹配),那么这将是完美的。我从asp.NETMVC知道这一点,它工作得非常完美,但在Laravel中找不到类似的方法


提前感谢您

好吧,假设您在
用户
模型上设置了
$filleble
属性,可以这样做:

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->only('name','email','password'));
但这是相当不标准的行为。我看不出有任何必要像这样自动创建模型,在控制器中放入更合理的模型只是:

$user = User::create($request->all());

您还应该考虑的是应该填写的字段,最合理的是直接传递哪些字段应该使用,例如:

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->only('name','email','password'));

你的意思是路线模型绑定吗?非常好的答案!它看起来非常方便,只需一行代码就可以解决我的需要。生成服务的解决方案也非常简洁。谢谢,不幸的是,我现在无法测试这一点,所以我会在可以的时候接受答案:)