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

  • <legend id='luC3w'><style id='luC3w'><dir id='luC3w'><q id='luC3w'></q></dir></style></legend>

      <tfoot id='luC3w'></tfoot>

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

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

        如何獲取 Laravel 刪除/更新/插入語句的原始 SQL?

        How to get the raw SQL for a Laravel delete/update/insert statement?(如何獲取 Laravel 刪除/更新/插入語句的原始 SQL?)
        <i id='tVGuW'><tr id='tVGuW'><dt id='tVGuW'><q id='tVGuW'><span id='tVGuW'><b id='tVGuW'><form id='tVGuW'><ins id='tVGuW'></ins><ul id='tVGuW'></ul><sub id='tVGuW'></sub></form><legend id='tVGuW'></legend><bdo id='tVGuW'><pre id='tVGuW'><center id='tVGuW'></center></pre></bdo></b><th id='tVGuW'></th></span></q></dt></tr></i><div class="fi0thjt" id='tVGuW'><tfoot id='tVGuW'></tfoot><dl id='tVGuW'><fieldset id='tVGuW'></fieldset></dl></div>
        <legend id='tVGuW'><style id='tVGuW'><dir id='tVGuW'><q id='tVGuW'></q></dir></style></legend>
          <tbody id='tVGuW'></tbody>

          1. <tfoot id='tVGuW'></tfoot>
          2. <small id='tVGuW'></small><noframes id='tVGuW'>

              • <bdo id='tVGuW'></bdo><ul id='tVGuW'></ul>

                • 本文介紹了如何獲取 Laravel 刪除/更新/插入語句的原始 SQL?的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

                  問題描述

                  我知道我可以在查詢構(gòu)建器上使用 toSql 方法來獲取帶有 SELECT 語句的綁定參數(shù)占位符的原始 SQL.

                  AppUser::where(['id'=>'1'])->toSql();

                  <塊引用>

                  "select * from `users` where (`id` = ?)"

                  但是我怎樣才能為 DELETE 語句得到這個(gè)?

                  AppUser::where(['id'=>'1'])->delete()->toSql();

                  <塊引用>

                  PHP 錯(cuò)誤:在第 1 行的整數(shù)上調(diào)用成員函數(shù) toSql()

                  這將執(zhí)行該語句,但我想獲得原始的、未插值的 SQL,其中問號(hào)代表值實(shí)際運(yùn)行查詢.同樣的情況適用于任何修改語句,例如 INSERTUPDATE

                  但是為什么,誰在乎呢?

                  這很像xy問題.我的 Web 應(yīng)用程序包括一個(gè)多進(jìn)程架構(gòu).它在更新數(shù)據(jù)庫的事件驅(qū)動(dòng)循環(huán)中運(yùn)行帶有異步通信偵聽的自定義工匠命令.

                  我需要原始查詢的原因是因?yàn)槲蚁胫赜脺?zhǔn)備好的語句以提高性能.不幸的是,eloquent 方法沒有公開準(zhǔn)備好的語句,所以為了重用一個(gè),我必須自己從底層 PDO 連接準(zhǔn)備它.

                  $sql = 'UPDATE `foo` SET `bar` = ?WHERE (`id` = ?)';$statement = DB::connection()->getPdo()->prepare($sql);而(真){$data = foo();$statement->execute([$data->bar, $data->id]);}

                  然而,這與抽象的 SQL 語法構(gòu)建器不同.因?yàn)槲夷壳罢谑褂?MySQL,所以我可以在語法上包含反引號(hào).但現(xiàn)在我陷入了供應(yīng)商鎖定的困境.例如,老板說我們明天要遷移到 MS SQL Server,那么(至少)必須捕獲使用反引號(hào)而不是方括號(hào)的錯(cuò)誤可能會(huì)很煩人.

                  我想使用動(dòng)態(tài)生成的 SQL 語法在準(zhǔn)備好的語句中重復(fù)使用.

                  解決方案

                  首先獲取模型表的查詢構(gòu)建器實(shí)例.

                  $builder = DB::table((new User)->getTable());

                  然后獲取語法并使用 where 子句從構(gòu)建器編譯刪除語句.

                  $sql = $builder->getGrammar()->compileDelete($builder->where('id', 1));

                  <塊引用>

                  從 `users` 中刪除 `id` = ?"

                  現(xiàn)在您可以自由地更換數(shù)據(jù)庫驅(qū)動(dòng)程序,并且仍然可以獲得適當(dāng)?shù)钠脚_(tái)語法.

                  I know I can use the toSql method on a query builder to get the raw SQL with binding parameter placeholders for a SELECT statement.

                  AppUser::where(['id'=>'1'])->toSql();
                  

                  "select * from `users` where (`id` = ?)"
                  

                  But how can I get this for a DELETE statement?

                  AppUser::where(['id'=>'1'])->delete()->toSql();
                  

                  PHP error: Call to a member function toSql() on integer on line 1

                  This executes the statement, but I would like to get the raw, uninterpolated SQL generated with the question marks standing in for values without actually running the query. The same case holds for any modification statement, such as INSERT or UPDATE

                  But why, who cares?

                  This smells a lot like an xy problem. My web application includes a multi-process architecture. It runs custom artisan commands with asynchronous communication listening in an event-driven loop that update the database.

                  The reason I need the raw query is because I want to reuse a prepared statement for performance efficiency. Unfortunately, the eloquent methods do not expose the prepared statement, so in order to reuse one, I'll have to prepare it myself from the underlying PDO connection.

                  $sql = 'UPDATE `foo` SET `bar` = ? WHERE (`id` = ?)';
                  
                  $statement = DB::connection()->getPdo()->prepare($sql);
                  
                  while (true) {
                      $data = foo();
                      $statement->execute([$data->bar, $data->id]);
                  }
                  

                  However, this departs from the abstracted SQL grammar builder. Because I'm using MySQL at the moment, I can syntactically include the backticks. But now I'm stuck with vendor lock-in. Say for example, the boss says we're moving to MS SQL Server tomorrow, then it's likely going to be annoying (at least) to have to catch bugs for using backticks instead of square braces.

                  I want to use the dynamically generated SQL grammar for reusing in a prepared statement.

                  解決方案

                  First get a query builder instance for the model's table.

                  $builder = DB::table((new User)->getTable());
                  

                  Then get the grammar and compile the delete statement from the builder with a where clause.

                  $sql = $builder->getGrammar()->compileDelete($builder->where('id', 1));
                  

                  "delete from `users` where `id` = ?"
                  

                  Now you can freely swap out database drivers and still get the appropriate platform syntax.

                  這篇關(guān)于如何獲取 Laravel 刪除/更新/插入語句的原始 SQL?的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

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

                  相關(guān)文檔推薦

                  MySQLi prepared statement amp; foreach loop(MySQLi準(zhǔn)備好的語句amp;foreach 循環(huán))
                  Is mysqli_insert_id() gets record from whole server or from same user?(mysqli_insert_id() 是從整個(gè)服務(wù)器還是從同一用戶獲取記錄?)
                  PHP MySQLi doesn#39;t recognize login info(PHP MySQLi 無法識(shí)別登錄信息)
                  mysqli_select_db() expects exactly 2 parameters(mysqli_select_db() 需要 2 個(gè)參數(shù))
                  Php mysql pdo query: fill up variable with query result(Php mysql pdo 查詢:用查詢結(jié)果填充變量)
                  MySQLI 28000/1045 Access denied for user #39;root#39;@#39;localhost#39;(MySQLI 28000/1045 用戶“root@“l(fā)ocalhost的訪問被拒絕)
                    • <bdo id='mTj2R'></bdo><ul id='mTj2R'></ul>

                        <tbody id='mTj2R'></tbody>

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

                      <tfoot id='mTj2R'></tfoot>
                      <legend id='mTj2R'><style id='mTj2R'><dir id='mTj2R'><q id='mTj2R'></q></dir></style></legend>

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

                            主站蜘蛛池模板: 称重传感器,测力传感器,拉压力传感器,压力变送器,扭矩传感器,南京凯基特电气有限公司 | 铝合金风口-玻璃钢轴流风机-玻璃钢屋顶风机-德州东润空调设备有限公司 | 济南轻型钢结构/济南铁艺护栏/济南铁艺大门-济南燕翔铁艺制品有限公司 | 大连海岛旅游网>>大连旅游,大连海岛游,旅游景点攻略,海岛旅游官网 | YAGEO国巨电容|贴片电阻|电容价格|三星代理商-深圳市巨优电子有限公司 | 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 地源热泵一体机,地源热泵厂家-淄博汇能环保设备有限公司 | 横河变送器-横河压力变送器-EJA变送器-EJA压力变送器-「泉蕴仪表」 | 不锈钢水箱生产厂家_消防水箱生产厂家-河南联固供水设备有限公司 | 振动筛-交叉筛-螺旋筛-滚轴筛-正弦筛-方形摇摆筛「新乡振动筛厂家」 | 【化妆品备案】进口化妆品备案流程-深圳美尚美化妆品有限公司 | 成都茶楼装修公司 - 会所设计/KTV装修 - 成都朗煜装饰公司 | 东莞市超赞电子科技有限公司 全系列直插/贴片铝电解电容,电解电容,电容器 | 学叉车培训|叉车证报名|叉车查询|叉车证怎么考-工程机械培训网 | 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 海德莱电力(HYDELEY)-无功补偿元器件生产厂家-二十年专业从事电力电容器 | 天品互联-北京APP开发公司-小程序开发制作-软件开发 | 冷凝水循环试验箱-冷凝水试验箱-可编程高低温试验箱厂家-上海巨为(www.juweigroup.com) | 杭州实验室尾气处理_实验台_实验室家具_杭州秋叶实验设备有限公司 | 游动电流仪-流通式浊度分析仪-杰普仪器(上海)有限公司 | 物联网卡_物联网卡购买平台_移动物联网卡办理_移动联通电信流量卡通信模组采购平台? | 作文导航网_作文之家_满分作文_优秀作文_作文大全_作文素材_最新作文分享发布平台 | 中国产业发展研究网 - 提供行业研究报告 可行性研究报告 投资咨询 市场调研服务 | 贴片电容代理-三星电容-村田电容-风华电容-国巨电容-深圳市昂洋科技有限公司 | 武汉高温老化房,恒温恒湿试验箱,冷热冲击试验箱-武汉安德信检测设备有限公司 | 大白菜官网,大白菜winpe,大白菜U盘装系统, u盘启动盘制作工具 | 网站建设-网站制作-网站设计-网站开发定制公司-网站SEO优化推广-咏熠软件 | 上海新光明泵业制造有限公司-电动隔膜泵,气动隔膜泵,卧式|立式离心泵厂家 | 科研ELISA试剂盒,酶联免疫检测试剂盒,昆虫_植物ELISA酶免试剂盒-上海仁捷生物科技有限公司 | 油罐车_加油机_加油卷盘_加油机卷盘_罐车人孔盖_各类球阀_海底阀等车用配件厂家-湖北华特专用设备有限公司 | 爆破器材运输车|烟花爆竹运输车|1-9类危险品厢式运输车|湖北江南专用特种汽车有限公司 | 济南玻璃安装_济南玻璃门_济南感应门_济南玻璃隔断_济南玻璃门维修_济南镜片安装_济南肯德基门_济南高隔间-济南凯轩鹏宇玻璃有限公司 | 空心明胶胶囊|植物胶囊|清真胶囊|浙江绿键胶囊有限公司欢迎您! | 模型公司_模型制作_沙盘模型报价-中国模型网 | 阻燃剂-氢氧化镁-氢氧化铝-沥青阻燃剂-合肥皖燃新材料 | 超声波焊接机_超音波熔接机_超声波塑焊机十大品牌_塑料超声波焊接设备厂家 | 衬塑管道_衬四氟管道厂家-淄博恒固化工设备有限公司 | 次氯酸钠厂家,涉水级次氯酸钠,三氯化铁生产厂家-淄博吉灿化工 | 钛合金标准件-钛合金螺丝-钛管件-钛合金棒-钛合金板-钛合金锻件-宝鸡远航钛业有限公司 | 预制舱-电力集装箱预制舱-模块化预制舱生产厂家-腾达电器设备 | 珠宝展柜-玻璃精品展柜-首饰珠宝展示柜定制-鸿钛展柜厂家 |