Laravel 输出相关标签

Posted

技术标签:

【中文标题】Laravel 输出相关标签【英文标题】:Laravel Output Associated Tags 【发布时间】:2016-04-28 21:25:43 【问题描述】:

我在 Laravel 5.1 中有一个应用程序,我的应用程序允许用户添加一篇文章并选择与该文章关联的多个类别。

我将文章之间的关系保存在关联表中,现在我想在用户的文章页面上输出用户提交的所有文章,但在标题一侧显示文章所属的类别。

文章页面将列出所有文章,因此列表必须是唯一的。

我的控制器:

public function index()
    
        $articles = DB::table('articles')
                    ->leftjoin('w_relations','w_relations.article_id','=','articles.id')
                    ->leftjoin('articlecategories','articlecategories.id','=','w_relations.type_id')
                    ->where('articles.comp_id',Auth::user()->comp_id)->get();

        return view('advertiser/workshops', compact('workshops'));
     

我的看法

<ul>
@foreach($articles as $a)
    <li> $a->article_name  |  $a->category_name </li>
@endforeach
</ul>

我以为上面会输出

Article 1 | History, Category, Category2

但我得到了

Article 1 | History Article 
1 | Category Article 
1 | Category2

我可以看出哪里出错了,但我不知道如何修复查询?

【问题讨论】:

【参考方案1】:

这里有一个快速解决您问题的方法,

    保留查询 处理输出

那么我的观点应该是这样的:

<ul>
@foreach($articles as $a)
    <li> $a->article_name  
    // inner loop on articles would only output category names
    // that match the current article
    // quite a labour if you ask me
    @foreach($articles as $x)
        @if($x->id == $a->id )
             $a->category_name 
        @endif
    @endforeach
    </li>
@endforeach
</ul>

我敢肯定,您可以利用 Laravel 的 Eloquent ORM

采用更优雅的方法来解决这个问题

【讨论】:

以上是关于Laravel 输出相关标签的主要内容,如果未能解决你的问题,请参考以下文章