Laravel 10中能否在Eloquent请求中按条件调用不同方法?
Laravel 10 通知查询代码简化方案
你想把原有的if-else逻辑简化成一行代码的思路没问题,但你写的代码存在PHP语法错误,不能直接在->后用三元运算符调用方法。以下是两种合法的简化写法:
写法一:先定义方法名变量
$method = $onlyUnread ? 'unreadNotifications' : 'notifications'; return auth()->user()->$method()->latest()->paginate($backendPerPage);
写法二:一行内动态调用方法
return auth()->user()->{$onlyUnread ? 'unreadNotifications' : 'notifications'}()->latest()->paginate($backendPerPage);
说明
在PHP中,动态调用对象方法时,需要用大括号{}包裹方法名的表达式,这样PHP才能正确解析要调用的方法名称。上述两种写法和你原本的if-else逻辑完全等价,既简化了代码,也保证了可读性。
内容的提问来源于stack exchange,提问作者mstdmstd
相关产品推荐
相关产品推荐

