【问题标题】:Check if membership exists检查会员是否存在
【发布时间】:2018-02-17 03:13:43
【问题描述】:

在 Laravel 5.5 中,我正在检查 profile->user->membership->id 是否等于 user->membership->id,如下所示:

if ($profile->user->membership->id != $user->membership->id ) {
        return Response::json(array(
            'error' => true,
            'status_code' => 400,
            'message' => 'profile_does_not_belong_to_membership',
        ));
    } 

这可行,但如果profile->user->membership 不存在,则会出现错误:

试图获取非对象错误的属性。

我需要先检查一下,还是有办法可以将它与原始语句结合起来?

【问题讨论】:

    标签: laravel laravel-5.5


    【解决方案1】:

    使用optional() 助手:

    optional($profile->user->membership)->id
    

    来自the docs

    optional 函数接受任何参数,并允许您访问该对象的属性或调用方法。如果给定的对象是null,属性和方法将返回null而不是导致错误

    【讨论】:

    • 谢谢你,当你回复时,我正在阅读可选内容!
    • 可以多次使用 optional 吗?如果配置文件也没有用户,它也不会中断?
    • @fightstarr20 你可以optional(optional(profile->user)->membership)->id
    • @fightstarr20 我错过了示例中的$optional(optional($profile->user)->membership)->id。刚刚测试了类似的代码,工作正常。
    • 不敢相信我错过了,这是漫长的一天,感谢指点!
    猜你喜欢
    • 2010-09-17
    • 2011-12-29
    • 2018-04-04
    • 2013-02-26
    • 2013-05-22
    • 2012-11-27
    • 1970-01-01
    • 2011-02-18
    • 2012-10-03
    相关资源
    最近更新 更多