我写了一个控制器来发送Post Model以及它的Categories和Pics:
class HomeController extends Controller
{
public function index ()
{
$latestPosts =
Post::with([
'latestPicture',
'categories' => function ($query) {
$query->select(['categories.cat_id', 'name']);
}
])
->take(12)->orderBy('created_at', 'desc')
->get(['post_id', 'post_title', 'post_alias', 'post_content', 'comments_count', 'created_at']);
// dd($latestPosts) ;
return view('main.pages.home', ['latestPosts' => $latestPosts]);
}
}
为了在我的视图中使用 latestPosts ,我写下这个:
@if (!$latestPosts->isEmpty())
@foreach($latestPosts as $post)
@if( key($latestPosts) <3)
<!-- Some HTML -->
@endif
@endforeach
@endif
但我遇到了这个错误:
Trying to get property of non-object (View: D:\wamp\www\TC\resources\views\main\pages\home.blade.php)
有什么问题?如何在视图中访问该集合?
答案 0 :(得分:1)
我发现在我的视图中有访问Post Model属性的Typo。
我必须使用 latestPicture 名称而不是 latest_picture 。
我纠正了,一切正常。
答案 1 :(得分:1)
他们有两件事我宁愿做与你那里有什么不同,这可能会带走你的错误,因为你不必使用isEmpty()属性。您可以使用@if
代替@forelse
语句代替{<1}}:
@forelse($latestPosts as $key => $post)
@if($key <= 3)
<!-- Some HTML -->
@endif
@empty
@endforelse
如果isEmpty()属性可用,我宁愿:
@unless($latestPosts->isEmpty())
@foreach()
@endforeach
@endunless
而不是@if(!$latestPosts->isEmpty())
,但后者只是有一个更清晰,更容易阅读的代码。粘贴dd($latestPosts)
的结果将使调试变得更容易。
即使你已经纠正了错字并且我花了更长的时间来发布这个,我认为你应该考虑一些提到的事情