我有一个包含所有类别的文章帖子的列表。我想在列表中的每个帖子中显示类别标记,我尝试了这个:
<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));
}
答案 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'));
}
这对你现在应该是这样的。