【发布时间】:2015-03-08 07:36:09
【问题描述】:
我目前正在开发一个使用存储库/服务层设计模式设置的 Web 应用程序,即我有一个服务层,它在运行存储库中的任何方法之前执行任何必要的业务逻辑。我的每个模型都有外观,可以访问它们各自的服务层,这在大多数情况下都很好。然而,现在我正在尝试建立 Eloquent 关系,外观似乎引起了巨大的头痛,因为我不确定我应该往哪个方向发展。
取以下代码:
class Account extends Eloquent {
// Our table name
protected $table = "accounts";
// Our primary key
protected $primaryKey = "id";
/**
* Role Relationship
*
* Returns a list of roles associated with
* this account
*/
public function roles() {
return $this->hasMany('Role');
}
}
这不会按原样工作,因为它不是使用 Role 的实体类,而是使用 Role Facade。我已经找到了一种解决方法,方法是为实体设置一个名称稍有不同的别名,例如 RoleEntity 以便
public function roles() {
return $this->hasMany('RoleEntity');
}
会起作用,但这似乎不是最佳解决方案。
我的问题是,练习可以吗?或者更好的是,这应该发生吗?如果没有,我该如何解决/我哪里出错了?
【问题讨论】:
-
我建议你把你的模型和外观放在不同的命名空间中,并像
App\Models\Role这样引用模型
标签: php laravel eloquent repository-pattern service-layer