在非对象上调用成员函数 isEmpty()?

pan*_*hro 5 laravel laravel-4

我通过以下方式在控制器中显示我的视图:

$data = Lib::index();
    $view = View::make('index')
        ->with('data', $data)
        ->render();
    return $view;
Run Code Online (Sandbox Code Playgroud)

我可以通过以下方式检查控制器中的数据是否为空:

$data->isEmpty();
Run Code Online (Sandbox Code Playgroud)

但是当我在视图中尝试相同的操作时,我收到错误:

Call to a member function isEmpty() on a non-object
Run Code Online (Sandbox Code Playgroud)

为什么?

这是 Lib::index() 的代码:

   $page = isset($_GET['page']) ? ($_GET['page']) : 1;

    Paginator::setCurrentPage($page);

    try {
        $data = Asset::with(array('sizes'=> function($query){
            $query->select('width', 'height', 'asset_id');
        }))->where('active', 1)->orderBy('updated_at', 'DESC')->paginate(Config::get('p.results_per_page'), array('id', 'alt'));
    }

    catch (QueryException $e) {

        App::abort(404);
    }


    return $data;
Run Code Online (Sandbox Code Playgroud)

Chu*_*nya 5

isEmpty()是一个集合方法。由于一些奇怪的原因,在视图中,它有时将空集合称为null。在我看来,最安全的检查是进行计数检查,如下所示:

if (count($data)) {...}
Run Code Online (Sandbox Code Playgroud)

这在控制器和视图中都很有效。


Dev*_*Dev -1

尝试

> var_dump($data);
Run Code Online (Sandbox Code Playgroud)

视图中。

看看它显示了什么。这可能有助于进一步调查该错误。

然后按照

>  foreach($data as $moredata){ 
>      $moredata->isEmpty();  }
Run Code Online (Sandbox Code Playgroud)

应该管用。