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


separating relationships and model functions in Laravel

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

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

class User extends Eloquent{}

在这个类中,我有寄存器函数和密码哈希函数等。此外,我们可以声明关系,这样:

class User extends Eloquent{
    function post(){
        return $this->hasMany('POST');
    }
}

出于某种原因,我觉得这很奇怪。我的解决方案是创建一个实体文件夹,并在里面创建一个用户文件夹,其中将包含两个文件,一个是UserRelationship,它将包含此类的关系:

   class UserRelationship extends Eloquent{
        function post(){
            return $this->hasMany('POST');
        }
    }

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

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

你们觉得这种方法怎么样?我对这一切都比较陌生,所以我不知道这是一种糟糕的做法,还是一种多劳多得的做法。你们推荐什么?

对于用户模型来说,工作量太大了。最简单也是更好的方法是在用户模型中定义关系。例如,如果它是一个帖子模型,其中你有发布到"用户、评论、回复等"的关系,那么你可以尝试拆分你的关系