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

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

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

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

        Yii2 QueryBuilder 更新与加入

        时间:2023-10-16
          <bdo id='pS5xY'></bdo><ul id='pS5xY'></ul>
          <legend id='pS5xY'><style id='pS5xY'><dir id='pS5xY'><q id='pS5xY'></q></dir></style></legend>
          <i id='pS5xY'><tr id='pS5xY'><dt id='pS5xY'><q id='pS5xY'><span id='pS5xY'><b id='pS5xY'><form id='pS5xY'><ins id='pS5xY'></ins><ul id='pS5xY'></ul><sub id='pS5xY'></sub></form><legend id='pS5xY'></legend><bdo id='pS5xY'><pre id='pS5xY'><center id='pS5xY'></center></pre></bdo></b><th id='pS5xY'></th></span></q></dt></tr></i><div id='pS5xY'><tfoot id='pS5xY'></tfoot><dl id='pS5xY'><fieldset id='pS5xY'></fieldset></dl></div>

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

              <tbody id='pS5xY'></tbody>
            <tfoot id='pS5xY'></tfoot>
                  本文介绍了Yii2 QueryBuilder 更新与加入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我有以下原始 SQL 查询:

                  I have the following raw SQL query:

                  UPDATE `pay_audit`
                  JOIN `invoice_items`
                  ON `invoice_items`.`mdn` = `pay_audit`.`account_id` 
                  AND `invoice_items`.`unitprice` = `pay_audit`.`payment`
                  AND `invoice_items`.`producttype_name` LIKE 'PAYMENT'
                  AND DATE_FORMAT(`invoice_items`.`created`, '%Y-%m-%d') = '2015-02-21'
                  SET `pay_audit`.`invoice_item_id` = `invoice_items`.`id`
                  WHERE `pay_audit`.`report_date` = '2015-02-21'
                  

                  日期是php中的变量$date.

                  The date is a variable $date in php.

                  如何将这个原始 SQL 查询转换"为 Yii2 QueryBuilder?

                  How can i "convert" this raw SQL query into Yii2 QueryBuilder?

                  [更新]

                  正如 Felipe 提到的,查询构建器是不可能的,所以我最终这样做了:

                  As Felipe mentioned it's not possible with query builder so i ended up doing it like followed:

                      $today = date('Y-m-d');
                      $sql = "";
                      $sql .= "UPDATE `pay_audit` ";
                      $sql .= "JOIN `invoice_items` ";
                      $sql .= "ON `invoice_items`.`mdn` = `pay_audit`.`account_id` ";
                      $sql .= "AND `invoice_items`.`unitprice` = `qpay_audit`.`payment` ";
                      $sql .= "AND `invoice_items`.`producttype_name` LIKE 'PAYMENT' ";
                      $sql .= "AND DATE_FORMAT(`invoice_items`.`created`, '%Y-%m-%d') = '$today' ";
                      $sql .= "SET `pay_audit`.`invoice_item_id` = `invoice_items`.`id` ";
                      $sql .= "WHERE `pay_audit`.`report_date` = '$today'";
                  
                      $command = Yii::$app->db->createCommand($sql);
                      $command->execute();
                  

                  推荐答案

                  我很害怕 Yii 2 查询生成器 仅用于选择查询.

                  对于更新查询,您至少有三个选项:

                  For update queries you have at least three options:

                  • 原始 SQL:

                  • Raw SQL:

                  Yii::$app->db->createCommand('update user set status = 1 where age > 30')->execute();
                  

                • 带有占位符的原始 SQL(防止 SQL 注入)

                • Raw SQL with placeholders (to prevent SQL injection)

                  Yii::$app->db->createCommand('update user set status = :status where age > 30')->bindValue(':status','1')->execute();
                  

                • update() 方法

                • update() method

                  // update user set status = 1 where age > 30
                  Yii::$app->db->createCommand()->update('user', ['status' => 1], 'age > 30')->execute();
                  

                • 更多信息在这里:

                  • Yii DAO

                  关于 SO 的另一个问题

                  这篇关于Yii2 QueryBuilder 更新与加入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:Yii2 - 在多个条件下左连接 下一篇:Yii2 CORS with Auth 不适用于非 CRUD 操作

                  相关文章

                  1. <small id='s50tB'></small><noframes id='s50tB'>

                  2. <legend id='s50tB'><style id='s50tB'><dir id='s50tB'><q id='s50tB'></q></dir></style></legend>

                    <tfoot id='s50tB'></tfoot>

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