在Laravel中分离关系和模型函数

时间:2014-09-10 15:07:52

标签: php class laravel

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

示例我有一个扩展Eloqeunt的User类:

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');
        }
    }

和第二个将是我将编写所有函数的实际User类,这个类将扩展UserRelationship类而不是Eloquent:

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;
    }
}

你们怎么看待这种方法我对这一切相对较新,所以我不知道这是不好的做法,还是为了得到很少的回报。你们推荐什么?

1 个答案:

答案 0 :(得分:0)

对于用户模型,这是太多的工作。最简单的方法仍然是更好的方法是在用户模型中定义关系。例如,如果它是一个帖子模型,你有关系发布到"用户,评论,回复等"然后你可以尝试分裂你的人际关系