关于laravel中when 的使用

laravel中可通过when 来判断当前是否需要执行该条件

A::when($a == 1, function($query){
    $query->where()
})

我今天写了一个判断

A::when(isset($a), function($query) use ($a){
    $query->where($a)
})

报错了,提示我$a未定义
我改写为

A::when(count($a) > 0, function($query) use ($a){
    $query->where($a)
})

这样可以正常调用。
isset返回的是布尔值呀。有点迷糊了。
谁知道呀

ps: $a 是外部传参,方法调用时会传$a,之前忘了写了。抱歉

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 3

isset($a) 那段代码,提示变量$a未定义是指匿名函数中使用到了变量$a,但是使用之前没有定义

3年前 评论

when的第二个参数是闭包,闭包实际上是一个对象,use进去的变量是这个对象继承的变量。
一个对象继承来的变量是未定义的,就肯定报错了。

3年前 评论
LiamHao 3年前
largezhou 3年前
WLLLL (楼主) 3年前
WLLLL (楼主) 3年前

这有啥意思吗?laravel 不是有错误提示嘛,你把代码分多行写,不要写在一行,就知道哪里有问题了。给你张截图自己体会吧:

Laravel

3年前 评论
WLLLL (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!