1. <dl id="EARUj"></dl>

              <area id="EARUj"><rt id="EARUj"><figure id="EARUj"></figure></rt></area><rt id="EARUj"><datalist id="EARUj"></datalist></rt>

              模型的column方法

              浏览:1009 发布日期:2020/02/17
              版本: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');
              评论(
              后面还有条评论,点击查看>>