如何检查对象的变量是否不为空?

我不知道我是否正确地提出了问题。但是,我有 2 个表 - 产品和类别(多对多关系),在类别页面中,我想显示它的分页产品,如果有的话,如果没有 - 我想显示“找不到产品” . 它有效,但没有分页。


这是控制器:


public function show($slug)

{

    $category = $this->categoryRepository->findBySlug($slug);

    $paginate = $category->products()->paginate(6);


    return view('site.pages.category')->with(['category' => $category,

    'paginate' => $paginate]);

}

怎么做才能做到这一点?


呼唤远方
浏览 125回答 3
3回答

叮当猫咪

试试下面的代码。我不是 Laravel 开发人员,只是看了一些文档并写了这个答案。您收到Call to a member function products() on null错误消息,因为$category它为空(没有任何数据)。所以你应该在调用之前检查是否$category有任何数据products()。您可以检查products刀片模板中是否为空并相应地打印消息。无需为此呈现另一个模板。public function show($slug){    $category = $this->categoryRepository->findBySlug($slug);    if ($category) {        $products = $category->products()->paginate(6);    }    return view('site.pages.category')->with(['products' => $products]);}在你的刀片模板中,检查$products不为空,@if ($products)    @foreach ($products as $product)        {{ $product->name}}    @endforeach    {{ $products->links() }}@else    products not found@endif显然,根据您的需要更改模板。

肥皂起泡泡

我这样修改了控制器:public function show($slug){    $category = $this->categoryRepository->findBySlug($slug);    $products = $category->products();    if(isset($products) && !empty($products)){    $paginate = $products->paginate(6);    return view('site.pages.category')->with(['category' => $category,    'paginate' => $paginate]);    }    else {        return view('site.pages.category', compact('category'));    }}但是,现在我明白了:Call to a member function products() on null..

长风秋雁

将它包裹在一个 if 语句周围,比如if(isset($your_variable) && !empty($your_variable)){你可能只需要 isset 或 !empty,但你可以四处乱逛,看看有什么用。希望有帮助!
打开App,查看更多内容
随时随地看视频慕课网APP