pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

<legend id='tPY04'><style id='tPY04'><dir id='tPY04'><q id='tPY04'></q></dir></style></legend>

          <bdo id='tPY04'></bdo><ul id='tPY04'></ul>

        <small id='tPY04'></small><noframes id='tPY04'>

        <tfoot id='tPY04'></tfoot>
      1. <i id='tPY04'><tr id='tPY04'><dt id='tPY04'><q id='tPY04'><span id='tPY04'><b id='tPY04'><form id='tPY04'><ins id='tPY04'></ins><ul id='tPY04'></ul><sub id='tPY04'></sub></form><legend id='tPY04'></legend><bdo id='tPY04'><pre id='tPY04'><center id='tPY04'></center></pre></bdo></b><th id='tPY04'></th></span></q></dt></tr></i><div class="bhvcblu" id='tPY04'><tfoot id='tPY04'></tfoot><dl id='tPY04'><fieldset id='tPY04'></fieldset></dl></div>

        如何使用 Laravel Eloquent 創(chuàng)建子查詢?

        How to create a subquery using Laravel Eloquent?(如何使用 Laravel Eloquent 創(chuàng)建子查詢?)
      2. <i id='DtUjx'><tr id='DtUjx'><dt id='DtUjx'><q id='DtUjx'><span id='DtUjx'><b id='DtUjx'><form id='DtUjx'><ins id='DtUjx'></ins><ul id='DtUjx'></ul><sub id='DtUjx'></sub></form><legend id='DtUjx'></legend><bdo id='DtUjx'><pre id='DtUjx'><center id='DtUjx'></center></pre></bdo></b><th id='DtUjx'></th></span></q></dt></tr></i><div class="5v87drf" id='DtUjx'><tfoot id='DtUjx'></tfoot><dl id='DtUjx'><fieldset id='DtUjx'></fieldset></dl></div>
        <legend id='DtUjx'><style id='DtUjx'><dir id='DtUjx'><q id='DtUjx'></q></dir></style></legend>

            • <small id='DtUjx'></small><noframes id='DtUjx'>

            • <tfoot id='DtUjx'></tfoot>
                <bdo id='DtUjx'></bdo><ul id='DtUjx'></ul>

                  <tbody id='DtUjx'></tbody>
                  本文介紹了如何使用 Laravel Eloquent 創(chuàng)建子查詢?的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

                  問題描述

                  我有以下 Eloquent 查詢(這是一個(gè)查詢的簡(jiǎn)化版本,它由更多的 whereorWhere 組成,因此明顯的迂回方式這 - 理論很重要):

                  I have the following Eloquent query (This is a simplified version of a query which consists of of more wheres and orWheres hence the apparent roundabout way of going about this - the theory is what's important):

                  $start_date = //some date;
                  
                  $prices = BenchmarkPrice::select('price_date', 'price')
                  ->orderBy('price_date', 'ASC')
                  ->where('ticker', $this->ticker)
                  ->where(function($q) use ($start_date) {
                  
                      // some wheres...
                  
                      $q->orWhere(function($q2) use ($start_date){
                          $dateToCompare = BenchmarkPrice::select(DB::raw('min(price_date) as min_date'))
                          ->where('price_date', '>=', $start_date)
                          ->where('ticker', $this->ticker)
                          ->pluck('min_date');
                  
                          $q2->where('price_date', $dateToCompare);
                      });
                  })
                  ->get();
                  

                  如您所見,我選擇發(fā)生在我的start_date 或之后的最早日期.這會(huì)導(dǎo)致運(yùn)行單獨(dú)的查詢以獲取此日期,然后將其用作主查詢中的參數(shù).有沒有一種雄辯的方法可以將查詢嵌入在一起形成一個(gè)子查詢,從而只有 1 個(gè)數(shù)據(jù)庫(kù)調(diào)用而不是 2 個(gè)?

                  As you can see I pluck the earliest date that occurs on or after my start_date. This results in a seperate query being run to get this date which is then used as a parameter in the main query. Is there a way in eloquent to embed the queries together to form a subquery and thus only 1 database call rather than 2?

                  根據(jù)@Jarek 的回答,這是我的查詢:

                  As per @Jarek's answer this is my query:

                  $prices = BenchmarkPrice::select('price_date', 'price')
                  ->orderBy('price_date', 'ASC')
                  ->where('ticker', $this->ticker)
                  ->where(function($q) use ($start_date, $end_date, $last_day) {
                      if ($start_date) $q->where('price_date' ,'>=', $start_date);
                      if ($end_date) $q->where('price_date' ,'<=', $end_date);
                      if ($last_day) $q->where('price_date', DB::raw('LAST_DAY(price_date)'));
                  
                      if ($start_date) $q->orWhere('price_date', '=', function($d) use ($start_date) {
                  
                          // Get the earliest date on of after the start date
                          $d->selectRaw('min(price_date)')
                          ->where('price_date', '>=', $start_date)
                          ->where('ticker', $this->ticker);                
                      });
                      if ($end_date) $q->orWhere('price_date', '=', function($d) use ($end_date) {
                  
                          // Get the latest date on or before the end date
                          $d->selectRaw('max(price_date)')
                          ->where('price_date', '<=', $end_date)
                          ->where('ticker', $this->ticker);
                      });
                  });
                  $this->prices = $prices->remember($_ENV['LONG_CACHE_TIME'])->get();
                  

                  orWhere 塊導(dǎo)致查詢中的所有參數(shù)突然變得不帶引號(hào).例如.WHEREprice_date>= 2009-09-07.當(dāng)我刪除 orWheres 時(shí),查詢工作正常.這是為什么?

                  The orWhere blocks are causing all parameters in the query to suddenly become unquoted. E.g. WHEREprice_date>= 2009-09-07. When I remove the orWheres the query works fine. Why is this?

                  推薦答案

                  這是您在以下位置執(zhí)行子查詢的方式:

                  This is how you do a subquery where:

                  $q->where('price_date', function($q) use ($start_date)
                  {
                     $q->from('benchmarks_table_name')
                      ->selectRaw('min(price_date)')
                      ->where('price_date', '>=', $start_date)
                      ->where('ticker', $this->ticker);
                  });
                  

                  不幸的是orWhere需要明確提供$operator,否則會(huì)引發(fā)錯(cuò)誤,所以在你的情況下:

                  Unfortunately orWhere requires explicitly provided $operator, otherwise it will raise an error, so in your case:

                  $q->orWhere('price_date', '=', function($q) use ($start_date)
                  {
                     $q->from('benchmarks_table_name')
                      ->selectRaw('min(price_date)')
                      ->where('price_date', '>=', $start_date)
                      ->where('ticker', $this->ticker);
                  });
                  

                  <小時(shí)>

                  實(shí)際上你需要在閉包中指定from,否則它不會(huì)構(gòu)建正確的查詢.


                  You need to specify from in the closure in fact, otherwise it will not build correct query.

                  這篇關(guān)于如何使用 Laravel Eloquent 創(chuàng)建子查詢?的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

                  【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

                  相關(guān)文檔推薦

                  Deadlock exception code for PHP, MySQL PDOException?(PHP、MySQL PDOException 的死鎖異常代碼?)
                  PHP PDO MySQL scrollable cursor doesn#39;t work(PHP PDO MySQL 可滾動(dòng)游標(biāo)不起作用)
                  PHP PDO ODBC connection(PHP PDO ODBC 連接)
                  Using PDO::FETCH_CLASS with Magic Methods(使用 PDO::FETCH_CLASS 和魔術(shù)方法)
                  php pdo get only one value from mysql; value that equals to variable(php pdo 只從 mysql 獲取一個(gè)值;等于變量的值)
                  MSSQL PDO could not find driver(MSSQL PDO 找不到驅(qū)動(dòng)程序)
                1. <small id='k5h4S'></small><noframes id='k5h4S'>

                  <legend id='k5h4S'><style id='k5h4S'><dir id='k5h4S'><q id='k5h4S'></q></dir></style></legend>
                      <bdo id='k5h4S'></bdo><ul id='k5h4S'></ul>

                      <i id='k5h4S'><tr id='k5h4S'><dt id='k5h4S'><q id='k5h4S'><span id='k5h4S'><b id='k5h4S'><form id='k5h4S'><ins id='k5h4S'></ins><ul id='k5h4S'></ul><sub id='k5h4S'></sub></form><legend id='k5h4S'></legend><bdo id='k5h4S'><pre id='k5h4S'><center id='k5h4S'></center></pre></bdo></b><th id='k5h4S'></th></span></q></dt></tr></i><div class="jy3jpv0" id='k5h4S'><tfoot id='k5h4S'></tfoot><dl id='k5h4S'><fieldset id='k5h4S'></fieldset></dl></div>
                            <tbody id='k5h4S'></tbody>
                        1. <tfoot id='k5h4S'></tfoot>

                            主站蜘蛛池模板: 东莞市踏板石餐饮管理有限公司_正宗桂林米粉_正宗桂林米粉加盟_桂林米粉加盟费-东莞市棒子桂林米粉 | 河南橡胶接头厂家,河南波纹补偿器厂家,河南可曲挠橡胶软连接,河南套筒补偿器厂家-河南正大阀门 | 礼仪庆典公司,礼仪策划公司,庆典公司,演出公司,演艺公司,年会酒会,生日寿宴,动工仪式,开工仪式,奠基典礼,商务会议,竣工落成,乔迁揭牌,签约启动-东莞市开门红文化传媒有限公司 | 不锈钢水箱厂家,不锈钢保温水箱-山东桑特供水设备 | 柴油发电机组_柴油发电机_发电机组价格-江苏凯晨电力设备有限公司 | 免费个人pos机申请办理-移动pos机刷卡-聚合收款码办理 | 斗式提升机_链式斗提机_带式斗提机厂家无锡市鸿诚输送机械有限公司 | 通用磨耗试验机-QUV耐候试验机|久宏实业百科 | 二手Sciex液质联用仪-岛津气质联用仪-二手安捷伦气质联用仪-上海隐智科学仪器有限公司 | 全自动包衣机-无菌分装隔离器-浙江迦南科技股份有限公司 | 合肥废气治理设备_安徽除尘设备_工业废气处理设备厂家-盈凯环保 合肥防火门窗/隔断_合肥防火卷帘门厂家_安徽耐火窗_良万消防设备有限公司 | 千淘酒店差旅平台-中国第一家针对TMC行业的酒店资源供应平台 | 板材品牌-中国胶合板行业十大品牌-环保板材-上海声达板材 | ERP企业管理系统永久免费版_在线ERP系统_OA办公_云版软件官网 | 铁盒_铁罐_马口铁盒_马口铁罐_铁盒生产厂家-广州博新制罐 | 结晶点测定仪-润滑脂滴点测定仪-大连煜烁 | 电池高低温试验箱-气态冲击箱-双层电池防爆箱|简户百科 | BOE画框屏-触摸一体机-触控查询一体机-触摸屏一体机价格-厂家直销-触发电子 | ★店家乐|服装销售管理软件|服装店收银系统|内衣店鞋店进销存软件|连锁店管理软件|收银软件手机版|会员管理系统-手机版,云版,App | 安徽合肥格力空调专卖店_格力中央空调_格力空调总经销公司代理-皖格制冷设备 | 广州监控安装公司_远程监控_安防弱电工程_无线wifi覆盖_泉威安防科技 | 工业设计,人工智能,体验式3D展示的智能技术交流服务平台-纳金网 J.S.Bach 圣巴赫_高端背景音乐系统_官网 | 熔体泵|换网器|熔体齿轮泵|熔体计量泵厂家-郑州巴特熔体泵有限公司 | 广西教师资格网-广西教师资格证考试网 | 熔体泵|换网器|熔体齿轮泵|熔体计量泵厂家-郑州巴特熔体泵有限公司 | 电子元器件呆滞料_元器件临期库存清仓尾料_尾料优选现货采购处理交易商城 | 塑料异型材_PVC异型材_封边条生产厂家_PC灯罩_防撞扶手_医院扶手价格_东莞市怡美塑胶制品有限公司 | 利浦顿蒸汽发生器厂家-电蒸汽发生器/燃气蒸汽发生器_湖北利浦顿热能科技有限公司官网 | 聚氨酯复合板保温板厂家_廊坊华宇创新科技有限公司 | 杭州实验室尾气处理_实验台_实验室家具_杭州秋叶实验设备有限公司 | 高硼硅玻璃|水位计玻璃板|光学三棱镜-邯郸奥维玻璃科技有限公司 高温高压釜(氢化反应釜)百科 | 点胶机_点胶阀_自动点胶机_智能点胶机_喷胶机_点胶机厂家【欧力克斯】 | 北京遮阳网-防尘盖土网-盖土草坪-迷彩网-防尘网生产厂家-京兴科技 | 期货软件-专业期货分析软件下载-云智赢| 高中学习网-高考生信息学习必备平台 | 美缝剂_美缝剂厂家_美缝剂加盟-地老板高端瓷砖美缝剂 | 苏州西装定制-西服定制厂家-职业装定制厂家-尺品服饰西装定做公司 | 冷水机-工业冷水机-冷水机组-欧科隆品牌保障 | 搪瓷反应釜厂家,淄博搪瓷反应釜-淄博卓耀 | 海德莱电力(HYDELEY)-无功补偿元器件生产厂家-二十年专业从事电力电容器 | 一氧化氮泄露报警器,二甲苯浓度超标报警器-郑州汇瑞埔电子技术有限公司 |