获取帖子记录中的类别名称

时间:2016-12-18 21:31:11

标签: laravel laravel-5

我有一个包含所有类别的文章帖子的列表。我想在列表中的每个帖子中显示类别标记,我尝试了这个:

<article class="post bg z-depth-1">
                    <?php foreach ($article_list as $article): ?>
                    <div class="post-img">
                        <a href="post.html">
                            <img class="retina" src="{{ asset('image/' . $article->image) }}" width="820" height="500" alt="Post Image">
                        </a>
                    </div>
                    <div class="post-content">
                        <div class="post-header center-align">
                            <div class="tags">
                                <a href="#">{{ $article->category->title }}</a></div>
                            <h2 class="post-title"><a href="post.html">{{ $article->title }}</a></h2>
                            <div class="date">Posted on {{ Carbon\Carbon::parse($article->created_at)->format('F j, Y') }}</div>
                        </div>
                        <div class="post-entry">
                            <p>sss</p>
                        </div>
                        <div class="post-footer">
                            <div class="post-footer-item">
                                <a href="post.html" class="link"><span class="text">Read More</span> <i class="fa fa-arrow-circle-right"></i></a>
                            </div>
                        </div>
                    </div><!-- .post-content -->
                    <?php endforeach ?>
                </article><!-- .post -->

并且它给了我错误Undefined property: stdClass::$category并且我不知道为什么,我已经在每个模型文章和类别中定义了关系。谢谢您的帮助!

在文章模型中:

public function category()
    {
        return $this->belongsTo('App\Category', 'category_id');
    }

在分类模型中:

public function article() {
        return $this->hasMany('App\Article', 'category_id');
    }

控制器:

public function index() {
        $article_list = Article::all();
        return view('article/index', compact('article_list', $article_list));
    }

3 个答案:

答案 0 :(得分:2)

您需要做的是在控制器中急切加载这些关系。

当您拉出记录时,请执行以下操作:

$article_list = Article::with('category')->get();

https://laravel.com/docs/5.3/eloquent-relationships#eager-loading

答案 1 :(得分:0)

更改此内容:$ article-&gt; category-&gt; title

对此:$ article-&gt; category() - &gt; title

在模型中定义关系时,您还要创建一个函数,而不是名为category的属性。

答案 2 :(得分:0)

public function category()
    {
        return $this->belongsTo('App\Category');
    }

在分类模型中:

public function article() {
        return $this->hasMany('App\Article');
    }

控制器:

public function index() {
        $article_list = Article::all();
        return view('article/index', compact('article_list'));
    }

这对你现在应该是这样的。