Laravel 多重联合

2023-12-08

我在以“laravel 方式”添加具有多个联合的查询时遇到问题。

我正在尝试完成一个与以下生成的查询等效的查询:

$ipsql = "";
for ($n = 1; $n < $total_networks; $n++) {
    $ipsql .= "(SELECT * FROM ip WHERE network = " . $n . " AND used = 0 LIMIT 5)
            UNION ALL";
}
if ($n == $total_networks) {
    $ipsql .= "(SELECT * FROM ip WHERE network = " . $n . " AND used = 0 LIMIT 3) ORDER BY ip_addr";
}

我还没有找到与 Eloquent 联合的选项,因此我尝试对这个特定部分使用查询构建器,但在使用构建器 unionAll 时我不断遇到问题。

使用这个:

$ip_list = DB::table('ips')->where('network', '=', '0')->where('used', '=', '0')->limit(5);
        for($n = 1; $n < $network_count; $n++){
            $ip_list = DB::table('ips')->where('network', '=', $n)->where('used', '=', '0')->limit(5)->unionAll($ip_list);
        }
        $ips = $ip_list->get();

我不断收到 MySQL 语法错误:

     SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax;
     check the manual that corresponds to your MySQL server version for the right syntax to use near
     'union all ((select * from `ips` where `network` = ? and `used` = ? limit 5) unio' at line 1 
    (SQL:
         (select * from `ips` where `network` = 16 and `used` = 0 limit 5) union all ((select * from `ips`
         where `network` = 15 and `used` = 0 limit 5) union all ((select * from `ips` where `network` = 14
         and `used` = 0 limit 5) union all ((select * from `ips` where `network` = 13 and `used` = 0 limit 5)
         union all ((select * from `ips` where `network` = 12 and `used` = 0 limit 5) union all ((select *
         from `ips` where `network` = 11 and `used` = 0 limit 5) union all ((select * from `ips` where
         `network` = 10 and `used` = 0 limit 5) union all ((select * from `ips` where `network` = 9 and
         `used` = 0 limit 5) union all ((select * from `ips` where `network` = 8 and `used` = 0 limit 5)
 union all ((select * from `ips` where `network` = 7 and `used` = 0 limit 5) union all ((select * from
         `ips` where `network` = 6 and `used` = 0 limit 5) union all ((select * from `ips` where `network` =
         5 and `used` = 0 limit 5) union all ((select * from `ips` where `network` = 4 and `used` = 0 limit
         5) union all ((select * from `ips` where `network` = 3 and `used` = 0 limit 5) union all ((select *
         from `ips` where `network` = 2 and `used` = 0 limit 5) union all ((select * from `ips` where
         `network` = 1 and `used` = 0 limit 5) union all (select * from `ips` where `network` = 0 and `used`
         = 0 limit 5)))))))))))))))))

我从错误中可以看出,它嵌套了每个新的联合调用,这导致了语法问题。 我尝试使用 DB::raw 完成相同的任务,但似乎也在某个地方犯了错误。有没有一种更适合 Laravel 的方法来实现这一点? 感谢您的关注!


Your unionAll调用确实是嵌套的。一种解决方案是在for循环,然后unionAll该子查询到主查询after它已经被定义了。然后你跑get完成后,整个过程如下:

$ips_list = DB::table('ips')->where('network', '=', '1')->where('used', '=', '0')->limit(5);

for($n = 1; $n < $total_networks; $n++){
    $ip_list_subquery = DB::table('ips')
             ->where('network', '=', $n)
             ->where('used', '=', '0')
             ->limit(5);
    $ips_list = $ips_list->unionAll($ip_list_subquery);
}
$ips = $ips_list->get();

所以,实际上,你正在链接unionAll calls:

$a->unionAll($b)->unionAll($c)->unionAll($d)...

而不是嵌套它们:

$a->unionAll($b->unionAll($c->unionAll($d...))))

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

Laravel 多重联合 的相关文章

  • 从 URL 任何文件类型创建图像

    我知道imagecreatefromgif https www php net manual en function imagecreatefromgif php imagecreatefromjpeg https www php net
  • MySQL如何从多个表中获取数据

    我正在寻找 php MySQL jquery 的帮助 我有2张桌子 table1表 1 有 4 列 id 标题 desc thumb img tabel2表 2 有 3 列 id 表 id img 我只想将 2 个表与 get QS 的值进
  • 通过 Facebook 图 api 点赞帖子

    你好 我对 facebook PHP SDK 没有什么问题 我想通过 facebook PHP SDK 点赞帖子或其他内容 我正在执行此代码 我认为它应该是正确的 但显然它不起作用 给定的错误代码是的 PHP SDK不知道这种POST请求
  • 获取php中两个日期之间的天数[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我试图获取两个日期之间的天数 但返回的结果不正确 这是我的尝试 t time get the time Y m d g
  • 如何对 PHP 数组中的值进行排序/过滤?

    我需要 foreach 这个数组的值 My CODE 该代码的结果 Array 0 gt Array 0 gt Age Name 1 gt 22 Yrs Value 2 gt Ethnicity Name 3 gt Caucasian Va
  • SCORM 与 PHP/Yii 的集成 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 实际上我是新手SCORMPHP 中的实现 理论上 我在这里提问之前已经介绍了这些领域 已经看过了维基百科 http en wikipedia
  • 我应该使用 htmlspecialchars 或 mysql_real_escape_string 或两者都使用[重复]

    这个问题在这里已经有答案了 我让用户输入一些信息 姓名 出生日期等 然后我必须将这些值插入数据库 我应该使用mysql real escape string http php net mysql real escape string防止 m
  • 访问父函数中定义的变量

    有没有办法访问 foo从内部inner function outer foo function inner print foo inner outer PHP 在 PHP 5 3 中 你可以这样做 function outer foo in
  • 改进将字符串转换为可读的 url

    以下函数重写包含各种字符的新闻和产品标题的 url 我希望创建的字符串仅包含字母数字值和 但没有结尾 或空格 也没有重复的 下面的函数工作正常 但我想知道是否有任何方法可以将其编写得更简单或更有效 function urlName stri
  • 从 XML 获取 viewCount [重复]

    这个问题在这里已经有答案了 我目前正在使用YouTube API https developers google com youtube 来自 Google 我正在尝试获取 viewCount 数组 我已经尝试过这个 但一点运气都没有 He
  • XAMPP 不解析 PHP

    我刚刚安装了 XAMPP 1 8 1 并重新启动了计算机 开始运行 Apache 和 MySQL 并在 XAMPP 下的 htdocs 目录中的测试文件夹中创建了一个测试文件 当我访问 xampp index php 时 他们的页面显示正常
  • Laravel 4 删除默认 getIndex 控制器函数上的 /index

    是否可以删除默认 getIndex Restful 控制器功能上的 index 控制器定义的路线 Route controller registration RegisterController array getIndex gt getR
  • 解码Json数据数组并插入到mysql

    这个问题可能已经在这里问过 但我尝试搜索找不到它 我有如下 Json 数据 CityInfo CityCode 5599 Name DRUSKININKAI CityCode 2003 Name KAUNAS CityCode 2573 N
  • 我可以在类变量中添加没有指定值的 PHP 数组键吗?

    我目前正在努力通过IBM 关于 CakePHP 的教程 http www 128 ibm com developerworks edu os dw os php cake1 html 有一次我遇到了这段代码
  • 如何使用 Symfony2 使 form_rest() 不显示字段?

    我已经开始使用 Symfony2 但遇到了一些问题 我想手动渲染字段 但它不起作用 因为我尚未渲染的字段显示为form rest 函数也一样 所以我有两个相同的字段 这是我的代码 div form errors form contenu d
  • 检查外部图像是否存在的正确 PHP 方法?

    我知道至少有 10 个相同的问题有答案 但似乎没有一个对我来说完美无缺 我正在尝试检查内部或外部图像是否存在 图像 URL 是否有效 fopen url r 失败 除非我使用 fopen Warning fopen http example
  • MySql如何通过过滤多列来限制多个数字?

    我想从数据库中获取 4 个不同类别的 50 个问题 我想要 4 个不同类别中每个类别的不同数量的问题 我的结果集必须包含第一类 12 个问题 第二类 20 个问题 第三类 10 个问题和第四类 8 个问题 我的问题表中总共有 50 个问题
  • PHP:使用输入和输出参数(不是“INOUT”)调用 MySQL 存储过程

    我想从 PHP 调用 MySQL 中的存储过程 该过程需要输入and输出参数 not INOUT 参数 举一个简单的例子 假设我在 MySQL 中有以下存储过程 DELIMITER DROP PROCEDURE IF EXISTS test
  • FOSRestBundle:显示我的自定义异常消息

    我试图在 FOSRestBundle 中添加异常的自定义控制 但它似乎忽略了我的自定义消息 响应的状态代码正常 I have throw new HttpException 404 User id not found 但得到这个 json
  • 如何使用 monolog ElasticSearchHandler 登录 Laravel 应用程序

    Monolog 包含弹性搜索处理程序和格式化程序 但它作为自定义通道对 Laravel 的实现并不像 Laravel 文档网站上描述的那么简单 以下是如何执行此操作的简要分步说明 为您的弹性搜索日志记录创建一个配置文件 config ela

随机推荐

  • Qt Creator 编辑器中的 CPU 使用率过高

    即使在简单的应用程序中 就像由向导制作的 QWidgets 应用程序一样简单 在编辑代码时 qtcreator exe 每隔一段时间就会飙升至 50 1 个核心 似乎即使在输入几个新字符后它也会解析整个项目 从而使其无响应并且在某种程度上无
  • 就地生成 2 个向量的笛卡尔积?

    如果我想得到这两个的笛卡尔积vector
  • 如何在曲面图上投影一条线?

    我有一个根据 CSV 文件中存储的点数据创建的曲面图 如果我想在 3D 创建的表面上投影一条线 漂浮在表面上方 方法是什么 我尝试过来自的代码以下帖子用于在 xy xz yz 平面上投影一条线 我可以看到它正在将线的端点投影到 xy xz
  • Bash-if 子句无法正常工作[重复]

    这个问题在这里已经有答案了 我想制作一个关闭脚本 但它没有按预期工作 这是我写的 echo Wanna shutdown y n read ANSWER if ANSWER y then sudo shutdown P now else p
  • CSS:“正确”属性拒​​绝申请?

    这真让我抓狂 我有两个 div 就在 body 标签之后 它们的位置和大小都是绝对的 它们都具有相同的 左 属性 但我后来声明了第二个 div 的 右 属性 因此 左 应该被忽略 这是 HTML div class previousPage
  • iOS Objective C - UIWebView 自动填充和执行

    我想知道是否有任何可能的方法可以让 webview 自动输入网站上文本框的值并提交 以便用户可以完全绕过搜索 特别是搜索表单 那么用户只能看到结果 一个例子是 http www eatwellguide org mobile 我注意到查看它
  • 泛型 > 在 collection.sort/ 类似的代码?

    我一直使用类似的接口通过 collection sort 为我的类提供自然排序 基本上 如果我有一个 person 类 我将让它实现 Comparable 接口并提供compareTo 的实现 但是在 javadocs 中 Collecti
  • 在hibernate中如何使用not in子句

    我有两张桌子 就业和生产 生产表有 jobid 字段 该字段引用作业表的 jobid 在hibernate中如何使用not in子句 实现如下sql查询 SELECT FROM jobs where job id not in 从生产中选择
  • 在Python中返回一个角色中的对象并在QML中获取另一个对象的引用

    我正在写一个 Twitter 客户端 我实施了TweetItem and TweetModel 问题是有一个角色TweetItem called original 我希望它指向原始推文 更新 我的代码中有一些拼写错误 现在我修复了它们 im
  • 如何定义静态运算符<<?

    是否可以定义一个仅对类的静态成员进行操作的静态插入运算符 就像是 class MyClass public static std string msg static MyClass operator lt lt const std stri
  • 在 OpenGL 中绑定零纹理

    在我的程序中 我使用 2 个纹理 t0 和 t1 t1 是附加的 仅在某些情况下需要 glActiveTexture GL TEXTURE1 if mDisplayMode EDM DEFAULT glBindTexture GL TEXT
  • 如何获取特定月份和年份的天数

    我有一个传递两个参数 Month 和 Year 的方法 我会这样调用这个方法 MonthDates January 2010 public static string MonthDates string MonthName string Y
  • iPhone——以编程方式创建UITabBar?

    如何做到这一点 请注意 我不想要控制器 只是一个标签栏 UITabBar aTabBar UITabBar alloc initWithFrame aFrame 您可能需要参考类文档例如像这样的方法 setItems animated 另外
  • 如何在 CSS 和 HTML 中创建价格标签形状

    所以我找到了这个答案 CSS3菜单形状 样式但不知道如何将其放在左侧 我已经搜索过了 但没有运气 这就是我想要实现的目标 我也发现了这个 改变三角形的形状 我怎样才能让它在另一侧工作 我的意思是箭头需要位于左侧 是否可以用一个来做到这一点d
  • 在matlab中用渐变灰度颜色绘制圆

    我想在matlab中画一个带有渐变颜色的圆 但我不能 有谁可以帮助我吗 示例图片可以在这里找到 这是一种方法 N 200 this decides the size of image X Y meshgrid 1 1 N 1 1 1 N 1
  • r 过滤具有唯一字段的数据框[重复]

    这个问题在这里已经有答案了 我给出了编码和 R 的第一步 但我遇到了一个问题 我有一个具有以下格式的数据框 Months Person April Person1 May Person2 April Person1 June Person
  • 自定义属性编辑器不适用于 Spring MVC 中的请求参数?

    我正在尝试使用 Spring 注释创建一个多操作 Web 控制器 该控制器将负责添加和删除用户配置文件并为 jsp 页面准备参考数据 Controller public class ManageProfilesController Init
  • app-inventor:将应用程序安装到 SD 卡上

    编辑以显示提问后一周的当前状态 我深入研究了应用程序发明家 因为我的孩子 10 岁和 12 岁 即将获得他们的第一部 Android 手机 并且已经完成了一些拖放编程 游戏制作者 所以我认为这对他们来说可能是一个很好的切入点 我现在已经用应
  • Swift 中的可变参数

    我有一段非常简单的代码 它在 Swift 语言中使用可变参数 我不明白它为什么抱怨 Double 不是相当于 Double 吗 我知道我可以这样传递 printList 2 3 4 5 我猜 Variadic 和我想象的不一样 您可以传递多
  • Laravel 多重联合

    我在以 laravel 方式 添加具有多个联合的查询时遇到问题 我正在尝试完成一个与以下生成的查询等效的查询 ipsql for n 1 n lt total networks n ipsql SELECT FROM ip WHERE ne