【问题标题】:Check if an object exists in a Laravel View检查 Laravel 视图中是否存在对象
【发布时间】:2018-02-12 15:31:57
【问题描述】:

我正在向 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 可能为空,这似乎会导致问题。

有什么建议吗?

【问题讨论】:

  • 你能用代码编辑你的问题吗?
  • @User 我已经添加了,希望你能从中理解我的问题。
  • 尝试像这样在控制器中返回 $related。
  • 评论这一行 return view('single')...
  • 你能粘贴你得到的确切错误吗,它应该告诉你你试图获取哪个对象的属性?这可能来自 $apk、$cat 或 $parentcat。需要正确的错误才能提供帮助。

标签: php laravel laravel-5 laravel-5.1


【解决方案1】:

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

这样试试

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

return $related;

如果 $related 值返回任何我们可以推送此对象以查看的东西,请先尝试这样。

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

【讨论】:

  • $related 为空时有时会起作用。有时当它不为空时,我会收到错误消息。我还完全删除了related 代码,但我仍然收到错误,所以它一定是别的东西。
  • 尝试将 $apk,$cat 值放入 return 语句中。
  • $cat 和 $parentcat 有问题。非常感谢!
【解决方案2】:

使用

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

【讨论】:

    【解决方案3】:

    这样检查:

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

    【讨论】:

      猜你喜欢
      • 2017-12-07
      • 2016-09-26
      • 2014-06-08
      • 2012-07-27
      • 2013-09-26
      • 2016-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多