Php Laravel中的分离关系和模型函数
每次我写一个Laravel模型的时候,它都会给我一种混乱的感觉。我有关系和其他模型功能,特别是在使用领域驱动设计时。所以我想分离关系和功能 示例I有一个扩展eLoqUnt的用户类: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');
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我确实使用了存储库,但是在命令驱动的设计中,您的模型和命令处理程序类中的存储库中都有函数,因此模型必须在很大程度上打破实体