Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel中的分离关系和模型函数_Php_Class_Laravel - Fatal编程技术网

Php Laravel中的分离关系和模型函数

Php Laravel中的分离关系和模型函数,php,class,laravel,Php,Class,Laravel,每次我写一个Laravel模型的时候,它都会给我一种混乱的感觉。我有关系和其他模型功能,特别是在使用领域驱动设计时。所以我想分离关系和功能 示例I有一个扩展eLoqUnt的用户类: class User extends Eloquent{} 在这个类中,我有注册函数和密码散列函数等。我们还可以声明关系,以便: class User extends Eloquent{ function post(){ return $this->hasMany('POST');

每次我写一个Laravel模型的时候,它都会给我一种混乱的感觉。我有关系和其他模型功能,特别是在使用领域驱动设计时。所以我想分离关系和功能

示例I有一个扩展eLoqUnt的用户类:

class User extends Eloquent{}
在这个类中,我有注册函数和密码散列函数等。我们还可以声明关系,以便:

class User extends Eloquent{
    function post(){
        return $this->hasMany('POST');
    }
}
不知什么原因,我觉得这味道很怪。我的解决方案是创建一个Entities文件夹,并在其中创建一个User文件夹,该文件夹将保存2个文件一个是UserRelationship,该文件夹将保存此类的关系:

   class UserRelationship extends Eloquent{
        function post(){
            return $this->hasMany('POST');
        }
    }
第二个是实际的用户类,我将在其中编写所有函数,这个类将扩展UserRelationship类,而不是雄辩的:

class User extends UserRelationship{

    public static function register($email, $password, $activate_token)
    {
        $user = new static(compact('email', 'password', 'activate_token'));

        $user->raise(new UserWasRegistered($user));

        return $user;
    }
}

你们对这种方法有什么看法?我对所有这些都比较陌生,所以我不知道这是一种不好的做法,还是工作太多而报酬太少。你们推荐什么?

对于一个用户模型来说,这太麻烦了。最简单的方法也是更好的方法是在用户模型中定义关系。例如,如果这是一个post模型,其中您有“用户、评论、回复等”的post关系,那么您可以尝试拆分您的关系

我根本不喜欢您的解决方案。唯一一次我会分开的关系是,如果它可以由多个模型共享,在这种情况下,我会把它作为一种特征。另一个更好的解决方案是创建一个UserRepository,为其提供一个user实例,然后使用该存储库执行诸如检索关系、插入新用户、,等等@Dave我确实使用了存储库,但是在命令驱动的设计中,您的模型和命令处理程序类中的存储库中都有函数,因此模型必须在很大程度上打破实体