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

在 Laravel 雄辩查询中获取 NULL/空列

在 Laravel 雄辩查询中获取 NULL/空列

PHP
HUWWW 2023-10-15 17:10:48
目前我正在 Laravel 上开发 ajax 搜索过滤器,但我无法获得正确的信息,情况如下:我有 2 张桌子:表1:软件请求表2:拒绝类别通过选择选项,我将名称命名为 Value我在控制器功能的查询顶部添加了该选择选项:$deniedReason = $request->get('deniedReason');        if($deniedReason == "All"){            $deniedReason = "";        }所以这意味着每次我选择“全部”时它都会是空的,这样我就可以获得像空一样的所有数据(这就是问题)。这是我当前的查询:$request_data = SoftwareRequest::leftJoin('DenyCategory', 'SoftwareRequest.DenyCategoryId', '=', 'DenyCategory.Id')->where('DenyCategory.Name', 'like', '%' . $deniedReason . '%')->paginate(20);所以问题是,如果我选择另一个选项而不是“全部”,例如“已经可用”,我确实会得到例外的数据,这意味着表 1 中的所有对象与具有该选项的表 2 连接,但问题出现在我选择“全部”,它不会带来应有的所有数据,这是因为并非所有对象都DenyCategoryId在 Table1 中,这意味着其中一些对象为空/空,因此它只会带来我在前一个代码块。$deniedReason = $request->get('deniedReason');        if($deniedReason == "All"){            $deniedReason = "";        }当我选择“全部”选项时如何使所有数据为空或不为空,以及当我选择另一个选项时如何获取数据?我敢打赌这与查询不是“喜欢”有关,但这超出了我的知识范围。
查看完整描述

1 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

为什么不将该where条款设为可选?


$queryBuilder = SoftwareRequest::leftJoin('DenyCategory', 'SoftwareRequest.DenyCategoryId', '=', 'DenyCategory.Id')


// Only apply where-clause when denied reason has been provided.

if ($request->get('deniedReason') !== 'All') {

    $queryBuilder = $queryBuilder->where('DenyCategory.Name', 'like', '%' . $deniedReason . '%');

}


$request_data = $queryBuilder->paginate(20);

查看完整回答
反对 回复 2023-10-15

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号