为了改善我的Laravel开发风格,我查看了this文章。所以我为我的用户模型创建了一个接口和存储库。但这个模型与"主题相关"模型。我也为这个创建了Interface和Repository。但是我需要在关系中提及什么呢?模型/实体本身或接口/存储库?
$id = 1;
$user = User::find($id);
$new_topics = $user -> topics() -> new();
只是我想要执行的代码的基本示例。那么我需要参考什么?这是用户模型:
/* The Model/Entity */
public function topics()
{
return $this -> hasMany('App\Models\Entities\Topic');
}
/* OR */
/* The Interface */
public function topics()
{
return $this -> hasMany('App\Models\Repositories\TopicInterface');
}
答案 0 :(得分:0)
您需要将模型传递给Eloquent ORM中的hasMany或其他关系方法。所以你要找的答案是,
/* The Model/Entity */
public function topics()
{
return $this -> hasMany('App\Models\Entities\Topic');
}
你在hasMany函数中设置的模型必须扩展Eloquent 或者关系模型不起作用。
答案 1 :(得分:0)
您提到的文章解释了如何实现一个使处理实体更优雅的外观,但它与Laravel的ORM部分无关,后者模拟实体之间的关系。因此,在处理ORM时,您必须引用模型类而不是存储库。 因此,您的问题的答案是
/* The Model/Entity */
public function topics()
{
return $this -> hasMany('App\Models\Entities\Topic');
}