从laravel中的视图中删除关系逻辑

时间:2014-07-12 09:18:35

标签: templates laravel laravel-4 relationship blade

我目前的情况是我的某个模型与用户模型使用'belongsTo'关系。

在'文章'模型中:

public function author()
{
    return $this->belongsTo('User');
}

现在我在视图中这样做,这似乎有效,但我觉得我在做我不应该做的逻辑。如果我需要在另一个视图中再次使用它,那么我需要重新创建逻辑。

@if($article->author)
    {{ $article->author->username }} 
@else
    [deleted]
@endif

那么解决这种情况的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

你的观点完全没问题。我没有看到任何错误。但是,您可能会遇到N + 1问题。如果您不急于加载作者关系,Laravel将在您每次尝试访问视图中的作者关系时运行查询。例如,$article->author->username每次要检索用户名时都会运行查询。

@if($article->author)
    {{ $article->author->username }} 
@else

为避免N + 1问题,您可以急切加载关系。

例如:

$article = Article::with('author')->find(1);

更多信息:

http://laravel.com/docs/eloquent#eager-loading