为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
呼唤远方 2023-04-28 17:30:52
我不知道我是否正确地提出了问题。但是,我有 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]);}怎么做才能做到这一点?
查看完整描述

3 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

试试下面的代码。我不是 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

显然,根据您的需要更改模板。


查看完整回答
反对 回复 2023-04-28
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

我这样修改了控制器:


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..


查看完整回答
反对 回复 2023-04-28
?
长风秋雁

TA贡献1757条经验 获得超7个赞

将它包裹在一个 if 语句周围,比如if(isset($your_variable) && !empty($your_variable)){你可能只需要 isset 或 !empty,但你可以四处乱逛,看看有什么用。希望有帮助!



查看完整回答
反对 回复 2023-04-28
  • 3 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信