检查Laravel视图中是否存在对象

时间:2015-09-14 13:25:35

标签: php laravel laravel-5 laravel-5.1

我将数据发送到Laravel视图,并且其中一个对象不可能存在,因为它不会从数据库中获得任何结果。

问题是我收到错误Trying to get property of non-object并且我不知道如何直接在视图中检查对象是否存在。

这里有一些要理解的代码:

$segment = $request->segment(2);
$apk = Apk::where('slug', '=', $segment)->first(); 

$cat = Category::where('id', $apk->category_id)->first();
$parentcat = Category::where('id', $cat->parent)->first();
$related = Apk::where('category_id', $cat->id)
                ->where('id', '!=', $apk->id)
                ->orderBy('id', 'desc')
                ->get();

return view('single')->with('apk', $apk)->with('related', $related)->with('cat', $cat)->with('parentcat', $parentcat);

观点:

@foreach ($related as $rel)
            <div class="item">
                <a href="{{ url('/apk/'.$rel->slug)}}">{{ $rel->name.' '.$rel->version }}</a>
            </div>
        @endforeach

$related可能为空,这似乎会导致问题。

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

我认为控制器中的$相关值是空的。

试试这个

$related = Apk::where('category_id', $cat->id)
                ->orWhere('id', '!=', $apk->id)
                ->orderBy('id', 'desc')
                ->get(); 

return $related;

首先尝试这样,如果$ related value返回任何可以推送此对象的东西。

所以首先检查来自数据库的数据。

答案 1 :(得分:0)

使用

@if($related)
    //foreach.....
@endif

答案 2 :(得分:0)

检查一下:

if ( !empty ( $variable ) ) {
    ...
}