laravel - 是否可以将模型传递给 Laravel 操作并使用匹配的发布数据自动实例化它?

标签 laravel laravel-5 eloquent laravel-5.5

如果可以为现有模型设置 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);
    }
}

但这是相当不标准的行为。我认为没有必要像这样自动创建模型,更合理的是放入 Controller 中:

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

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

$user = User::create($request->only('name','email','password'));

关于laravel - 是否可以将模型传递给 Laravel 操作并使用匹配的发布数据自动实例化它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47237006/

相关文章:

php - 如何使 Laravel 对输入数组进行唯一验证?

php - 使用 vagrant 和 homestead 时找不到 Laravel 5 View

php - 如何在 Laravel 中启用错误报告?

php - Eloquent :混淆使用数据透视表

eloquent - Laravel 5.2 多模型保存()

php - 带默认值的 Laravel 模型方法

php - Laravel 错误 "Class ' App\Http\Controllers\DateTime' 未找到”

php - 为 Laravel 4 队列监听器启用详细模式

laravel - 如何验证控制台命令提示符输入

php - Laravel html 表格