Laravel 中的高级 whereNotNull 语句

2024-05-22

在 Laravel 4 中可以执行以下操作吗? ...

DB::table('myTable')
    ->select(DB::raw($columnNames))
    ->whereNotNull(function($query) use($columns) {
        foreach ($columns as $column) {
            $query->whereNotNull($column);
        }
    })
    ->get();

如果我有下表:

table: myTable
id  |   name    |   age     |   weight  
======================================
1    Jane        NULL        150
2    NULL        12          80
3    Bob         NULL        NULL
4    John        22          120
5    Cody        NULL        NULL

If $columns is [age, weight] and $columnNames is 'age, weight',然后应用上面的 whereNotNull 语句,我期望输出如下:

age     |    weight
===================
NULL         150
12           80
22           120

我怎样才能完成这件事?

UPDATE:

条件是返回所选列不全部为空的所有行。所以一个whereNotNull子句必须应用于每行中的每个(选定的)列。如果所有列均为 NULL,则 whereNotNull 将返回 false,并且该行不应成为结果的一部分。因此,只应返回至少具有一个非 NULL 值的行。


如果这些是唯一的位置,那么您甚至不需要嵌套的位置。重要的:orWhereNotNull代替whereNotNull所以只有一列必须不是NULL.

$query = DB::table('myTable')->select(DB::raw($columnNames));

foreach($columns as $column){
    $query->orWhereNotNull($column);
}

$result = $query->get();

另外(至少在你的例子中)你不需要一个单独的变量$columnNames since select将接受列名数组。

$query = DB::table('myTable')->select($columns);

如果您碰巧需要更多 where 条件(尤其是具有AND)你需要一个嵌套位置:

$query = DB::table('myTable')->select(DB::raw($columnNames));

$query->where(function($q) use ($columns){
    foreach($columns as $column){
        $q->orWhereNotNull($column);
    }
});

$result = $query->get();

嵌套的放置位置( )围绕 where 子句。这意味着而不是:

WHERE age IS NOT NULL OR weight IS NOT NULL AND foo = 'bar'

You get:

WHERE (age IS NOT NULL OR weight IS NOT NULL) AND foo = 'bar'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 中的高级 whereNotNull 语句 的相关文章

  • 更改laravel视图页面中的日期格式[重复]

    这个问题在这里已经有答案了 我想更改从数据库获取的日期格式 现在我得到了 2016 10 01 user gt from date 我想更改 laravel 5 3 中的格式 d m y user gt from date gt forma
  • npm run dev 和 npm run production 之间的区别

    我对 Laravel 和 vue js 很陌生 请让我知道它们之间有什么区别npm run dev and npm run production 这和环境有关系吗 npm run dev创建源映射并且不会缩小 js css 这使得调试和查找
  • 使用 Laravel 在 Bootstrap 模式中动态加载表单

    我正在开发应用程序 它需要引导模式中的表单 并且还动态加载表单 我面临的问题是所有页面都再次以模式加载 这里有人为此提供任何例子吗 控制器 public function loadJsModalForm return View make f
  • 特定文件夹的 .htaccess 例外

    这是我的 htaccess 代码 位于根文件夹中
  • Laravel 集合到数组

    我有两个模型 Post and Comment 许多评论属于一个帖子 我正在尝试以数组形式访问与帖子相关的所有评论 我有以下内容 它提供了一个集合 comments collection post gt comments gt get 我该
  • 场次抽奖

    有人能解释一下什么是会话扫彩票吗 我已附加 Laravel 框架的默认会话配置文件 问题 1 它说某些会话驱动程序必须manually扫荡他们的 存储位置 有人可以描述这个过程以及为什么会这样吗 必要的 哪些会话驱动程序需要此操作 2 为什
  • 如何根据动态列分钟计算 Laravel Eloquent 中不同的日期时间

    我正在尝试基于两个数据库和列进行查询 model gt where response time lt Carbon now gt subMinutes DB raw anotherTable created at gt diffInMinu
  • 作曲家 | laravel 5 - 更新依赖项但框架本身

    我正在为我的项目使用 Laravel 5 的预测试版 我发现 Laravel 5 的应用程序框架在 github 存储库中发生了更改 并且由于它是开发版本 因此预计会经常更改 我的问题是 我可以使用 Composer 只更新特定的依赖项而不
  • Laravel 5 Auth 注销不起作用

    当我使用内置身份验证并尝试在以下位置注销用户时 auth logout 它没有像希望的那样工作 它似乎让用户保持登录状态 但是当我清除浏览器缓存时 我可以看到实际上已经将用户注销了 我在页面上没有收到任何错误 在日志文件中也没有收到任何错误
  • Laravel 5 - 更改默认日志位置,将日志文件移至应用程序之外

    如何更改默认日志文件位置
  • Blade @if 中的 Laravel 会话变量

    当我尝试使用 Laravel Session 在刀片中设置 JS 变量来刷新一些数据时 我在 Laravel 4 2 中遇到了一些奇怪的情况 这很简单 我不知道我错过了什么 目标 在用户注册后立即触发 Javascript 网站浏览 方法
  • 这个条带请求是什么?为什么它会多次触发?

    对于使用 stripe 的 Laravel 应用程序 此请求https r stripe com 0被解雇多次 如下所示 我刷新主页后 这些请求立即被触发 问题是我最近得到了一个429 too many requests我的实时服务器出现错
  • 是否可以将路由参数传递给 Laravel 中的控制器构造函数?

    是否可以将路由参数 或路由段 注入到控制器构造函数中 您找到一些代码来澄清我的问题 class TestController protected param public function construct paramFromRoute
  • 如何使用更新资源控制器 laravel 4?

    我有带有索引 编辑 更新方法的客户控制器 Route resource customer CustomerController 控制器方法更新 public function update id echo id 我的 HTML 表单
  • 从 Laravel 4 输入生成新数组

    我使用 Input all 从动态生成的表单中获取一些输入 我使用 jQuery 来允许用户添加字段 字段名称为 first names last names 和 emails input 变量现在看起来像这样 array size 4 t
  • 分页在服务器端好还是前端好? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在构建 Laravel Vue 应用程序 我想知道在后端使用分页还是在前端使用分页更好 我认为最好在每页发送尽可能少的数据的请求 但我想听听
  • Laravel 保存文件将其发布为 bin 文件

    我试图在 laravel 中保存文件 但它最终被保存为 bin 文件 file request gt file file name Carbon now gt format Y m d strtotime Carbon now file g
  • 致命错误:PHP 从版本 7.0 升级到 7.2 后找不到类“SoapClient”

    我升级了PHP 7 0 to 7 2在Ubuntu中 执行升级后 我安装了 Laravel 5 6 升级之前 类 SoapClient 是true 但是升级之后 我遇到了 致命错误 未找到 SoapClient 类 我检查了php ini
  • Laravel - 记录“找不到路线”

    当找不到路线时 我没有看到任何日志输出 我在开发模式下运行 laravel 当遇到不存在的路线时 我会看到此错误 message exception Symfony Component HttpKernel Exception NotFou
  • Laravel http 请求:无法运行多个请求

    我在 Laravel http 请求方面遇到了严重的问题 请帮我解决这个问题 我假设我有 2 个请求路由到相同的控制器 Req 1 http localhost 8000 manualScheduler runScript task nam

随机推荐