使用MVC和Laravel的正确方法是什么

时间:2017-09-13 00:41:18

标签: laravel model-view-controller

我正在使用laravel构建一个CRUD,我不确定MVC规则 我认为与数据库(Crud)相关的所有功能都应该在模型内部而不是控制器中完成。但我在用户控制器中找到了这个:

protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
    ]);
}  

我知道它不会持久存储到数据库,只返回User类的新实例。我应该在模型中调用此函数,然后坚持下去吗? 调用它来制作->save()没有多大意义。

1 个答案:

答案 0 :(得分:0)

你的例子没问题,但如果你认为你的控制器做了太多不应该做的工作,你可以重构代码来转移工作。

例如,在您的代码中,密码为... PG::ConnectionBad: could not connect to server: Connection refused Is the server running on host "localhost" (127.0.0.1) and accepting TCP/IP connections on port 5432? could not connect to server: Cannot assign requested address Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432? /usr/local/bundle/gems/activerecord- 4.2.7.1/lib/active_record/connection_adapters/postgresql_adapter.rb:651:in `initialize' ,您可以在bcrypt模型中创建新函数(或者如果需要,可以创建另一个帮助程序类,如UserUserHelper

UserQuery

您现在可以使用此功能直接传递用户数据,它将承担密码的class User ... { public static function registerUser($data) { $data['password'] = bcrypt($data['password']); $user = self::create($data); return $user; } }

bcrypt

我认为我们应该始终牢记,如果一个类/方法/任何其他控制点正在做一些超出其目的的事情,那么我们应该考虑将它重构到另一个控制点。