• <tr id="vIARO"><sub id="vIARO"><form id="vIARO"><small id="vIARO"><param id="vIARO"><hgroup id="vIARO"><q id="vIARO"><b id="vIARO"><keygen id="vIARO"><link id="vIARO"></link></keygen><area id="vIARO"></area><em id="vIARO"></em></b><select id="vIARO"></select></q></hgroup></param></small></form><select id="vIARO"></select><acronym id="vIARO"></acronym></sub></tr>
    1. <dt id="vIARO"><col id="vIARO"><ol id="vIARO"><meter id="vIARO"></meter></ol></col></dt>

        1. <section id="vIARO"></section>
          <object id="vIARO"><progress id="vIARO"><i id="vIARO"><p id="vIARO"><em id="vIARO"><meter id="vIARO"></meter><sup id="vIARO"><hgroup id="vIARO"></hgroup><label id="vIARO"><samp id="vIARO"><table id="vIARO"></table></samp></label><link id="vIARO"><col id="vIARO"></col></link></sup></em></p></i></progress><ins id="vIARO"><cite id="vIARO"><output id="vIARO"></output><fieldset id="vIARO"><map id="vIARO"></map><label id="vIARO"></label><embed id="vIARO"><code id="vIARO"></code></embed></fieldset><blockquote id="vIARO"></blockquote><select id="vIARO"><sup id="vIARO"><caption id="vIARO"><param id="vIARO"><link id="vIARO"><dl id="vIARO"></dl></link></param></caption></sup></select><address id="vIARO"></address></cite><link id="vIARO"></link></ins></object>

          模型的column方法

          浏览:1033 发布日期:2020/02/20
          版本:TP 6.0User::column('name');
          User::column('name', 'name');

          // 都是返回 关联数组 ['张三'=>'张三', '李四'=>'李四']
          以前TP5返回的是索引数组,User::column('name');
          // 索引数组 [0=>'张三', 1=>'李四']

          User::column('name', 'name');
          // 关联数组 ['张三'=>'张三', '李四'=>'李四']
          导致的问题,如果数据里有同名的用户,查出的数据就会与预期不一致。// TP5 ['张三', '张三', '李四']

          // TP6 ['张三', '李四']
          虽然TP5与TP6执行的SQL都为 SELECT name FROM user;
          但TP6的结果 等同于强制加了 DISTINCT 的 SELECT DISTINCT name FROM user;原因
          think\db\PDOConnection中的第1139行if (empty($resultSet)) {
                      $result = [];
                  } elseif (('*' == $column || strpos($column, ',')) && $key) {
                      $result = array_column($resultSet, null, $key);
                  } else {
                      $fields = array_keys($resultSet[0]);

          // 第1139行
                      $key    = $key ?: array_shift($fields);

                      if (strpos($column, ',')) {
                          $column = null;
                      } elseif (strpos($column, '.')) {
                          list($alias, $column) = explode('.', $column);
                      }

                      if (strpos($key, '.')) {
                          list($alias, $key) = explode('.', $key);
                      }

                      $result = array_column($resultSet, $column, $key);
                  }
          当$key为空时,就使用了$column充当数组的键

          建议改为if(empty($key)){
              $key = null;
          } else {
              $key = array_shift($fields);
          }

          ...
          $result = array_column($resultSet, $column, $key);
          这样,如果想要现在的形式,就明确指定$key
          User::column('name', 'name');

          如果,只关心value,key用自然数填充,就简单的
          User::column('name');
          评论(
          后面还有条评论,点击查看>>