【问题标题】:Removing relationship logic from view in laravel从 laravel 的视图中删除关系逻辑
【发布时间】:2023-03-27 13:20:01
【问题描述】:

目前,我的一个模型与用户模型使用“belongsTo”关系。

在“文章”模型中:

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

现在我正在视图中执行此操作,这似乎可行,但我觉得我正在做不应该做的逻辑。如果我需要在另一个视图中再次使用它,那么我需要重新创建逻辑。

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

那么处理这种情况的最佳方法是什么?

【问题讨论】:

    标签: templates laravel laravel-4 relationship blade


    【解决方案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

    【讨论】:

    • 感谢您的回答!很高兴知道我至少在做正确的事情,有时很难说。感谢您提供有关即时加载的提示,从现在开始我一定会确保这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 2016-11-18
    相关资源
    最近更新 更多