Laravel:如何使用关系函数

时间:2018-04-18 15:13:59

标签: laravel eloquent

我面临的情况是我必须从关系实例的控制器调用一个函数。为了更好的解释,我将在下面写一个例子

我有一个Article控制器,我有一个preview()功能。

User可以有多个Article

假设preview()函数解析文本并用用户名替换特殊文本。

所以我的功能看起来像这样

//In ArticleController
public function preview(Article $article , User $user){
    return str_replace("username", $user->name , $article->text);
}

但是对于特定情况,我想在列出所有用户时显示文章的预览

所以在UserController中

public function index(){
    foreach( User::all() as $user){
        echo $user->articles[0]->preview( ... );
    }
}

显然这段代码不起作用。

但是当我面对这种需求时,我更关注如何继续前进。

我应该创建一个存储库吗?在其他地方使用此preview()功能?或者这样做是不是一种坏习惯?当我们面对这个问题时,最好的方法或思维方式是什么?

或者我可能只是错过了Laravel的ORM中的重要内容。 :/

1 个答案:

答案 0 :(得分:1)

我认为文章是一个模型。所以你必须向用户添加hasMany关系(用户有很多文章)。在文章中你必须添加预览功能。在这种情况下,您将能够找到$ user->文章(或用户 - >文章)并运行 - >预览功能。这是我猜的最简单的解决方案。

您还可以添加自定义属性(如getPreviewAttribute)并将其附加到文章模型。这样你就可以获得$ user-> article->预览。