3 回答

TA貢獻1909條經(jīng)驗 獲得超7個贊
您應該建立BlogPost和BlogCategory模型之間的關(guān)系,看到您已經(jīng)category_id在BlogPost模型中有一個字段,即:
在BlogPost型號中:
public function category(){
return $this->belongsTo(\App\BlogCategory::class);
}
在BlogCategory型號中:
public function posts(){
return $this->hasMany(\App\BlogPost::class);
}
接下來,您可以渴望的負載 categories與$posts在你的控制器只有兩個疑問:
public function index()
{
$posts = BlogPost::with('category')->orderBy('id', 'desc')->take(14)->get();
return view('blog.index', compact('posts'));
}
然后在您的視圖中,您可以$post->category直接訪問每個對象,因為在控制器中加載了熱切:
@foreach($posts as $post)
@if($loop->iteration > 2)
<div class="col-sm-6 col-md-3 d-flex justify-content-center other-post">
<a href="#">
<img src="#" alt="">
<p class="post-category">{{ $post->category->name }}</p>
<h5 class="post-title">{{ $post->title }}</h5>
</a>
</div>
@endif
@endforeach

TA貢獻1844條經(jīng)驗 獲得超8個贊
它可以優(yōu)化,首先,您需要從類別到帖子建立一對多的關(guān)系
首先:確保您在帖子遷移category_id列中有
第二:打開類別模型并編寫此方法,這將允許您獲取屬于該類別的帖子
public function posts(){
return $this->hasMany(\App\Post::class);
}
第三:打開店鋪模型并編寫此方法,這將允許您獲取屬于帖子的類別
public function catgeory(){
return $this->belongsTo(\App\Category::class);
}
最后:您將像這樣編輯您的視圖
@foreach($posts as $post)
<div class="col-sm-6 col-md-3 d-flex justify-content-center other-post">
<a href="#">
<img src="#" alt="">
<p class="post-category">{{ $post->category->title }}</p>
<h5 class="post-title">{{ $post->title }}</h5>
</a>
</div>
@endforeach
當然,您不會再在控制器中調(diào)用類別
public function index()
{
$post = BlogPost::orderBy('id', 'desc')->take(14)
->with('category')->get();
return view('blog.index', ['posts' => $post]);
}

TA貢獻1831條經(jīng)驗 獲得超4個贊
此行為$categories->get($post->category_id)
您返回一個數(shù)組category
,因此這里的解決方案如下所示:
{{ $categories->get($post->category_id)['name'] }}
- 3 回答
- 0 關(guān)注
- 317 瀏覽
添加回答
舉報