创建存储库,在模型关系中引用什么?

时间:2015-06-19 17:08:44

标签: php laravel model

为了改善我的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');
}

2 个答案:

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