2017-03-14 16:15:58 7872次浏览 4条回答 0 悬赏 10 金钱

我用 GroupBy字段 将数据库中查询的数据按某个字段分类, 但是每个分类只能查询一条数据 。这如何解决?

$modal = TestQuestion::find()->joinWith('options')->asArray()->all();
var_dump($modal);

数据:

array(5) {
  [0]=>
  array(5) {
    ["id"]=>
    string(1) "1"
    ["type"]=>
    string(1) "1"
    ["question"]=>
    string(7) "天冷1"
    ["order"]=>
    string(1) "1"
    ["options"]=>
    array(2) {
      [0]=>
      array(5) {
        ["id"]=>
        string(1) "1"
        ["pid"]=>
        string(1) "1"
        ["name"]=>
        string(3) "对"
        ["tip"]=>
        string(18) "撒的方式地方"
        ["grade"]=>
        string(1) "1"
      }
      [1]=>
      array(5) {
        ["id"]=>
        string(1) "2"
        ["pid"]=>
        string(1) "1"
        ["name"]=>
        string(3) "错"
        ["tip"]=>
        string(18) "撒的方式地方"
        ["grade"]=>
        string(1) "0"
      }
    }
  }
  [1]=>
  array(5) {
    ["id"]=>
    string(1) "2"
    ["type"]=>
    string(1) "1"
    ["question"]=>
    string(7) "天冷2"
    ["order"]=>
    string(1) "2"
    ["options"]=>
    array(2) {
      [0]=>
      array(5) {
        ["id"]=>
        string(1) "3"
        ["pid"]=>
        string(1) "2"
        ["name"]=>
        string(3) "对"
        ["tip"]=>
        string(18) "时代发生地方"
        ["grade"]=>
        string(1) "1"
      }
      [1]=>
      array(5) {
        ["id"]=>
        string(1) "4"
        ["pid"]=>
        string(1) "2"
        ["name"]=>
        string(3) "错"
        ["tip"]=>
        string(27) "对我说发生的发生的"
        ["grade"]=>
        string(1) "0"
      }
    }
  }
  [2]=>
  array(5) {
    ["id"]=>
    string(1) "3"
    ["type"]=>
    string(1) "1"
    ["question"]=>
    string(7) "天冷3"
    ["order"]=>
    string(1) "3"
    ["options"]=>
    array(0) {
    }
  }
  [3]=>
  array(5) {
    ["id"]=>
    string(1) "4"
    ["type"]=>
    string(1) "1"
    ["question"]=>
    string(7) "天冷4"
    ["order"]=>
    string(1) "4"
    ["options"]=>
    array(0) {
    }
  }
  [4]=>
  array(5) {
    ["id"]=>
    string(1) "5"
    ["type"]=>
    string(1) "1"
    ["question"]=>
    string(7) "天冷5"
    ["order"]=>
    string(1) "5"
    ["options"]=>
    array(0) {
    }
  }
}
 $modal = TestQuestion::find()->joinWith('options')->groupBy('type')->asArray()->all();
 var_dump($modal);

数据:

array(1) {
  [0]=>
  array(5) {
    ["id"]=>
    string(1) "1"
    ["type"]=>
    string(1) "1"
    ["question"]=>
    string(7) "天冷1"
    ["order"]=>
    string(1) "1"
    ["options"]=>
    array(2) {
      [0]=>
      array(5) {
        ["id"]=>
        string(1) "1"
        ["pid"]=>
        string(1) "1"
        ["name"]=>
        string(3) "对"
        ["tip"]=>
        string(18) "撒的方式地方"
        ["grade"]=>
        string(1) "1"
      }
      [1]=>
      array(5) {
        ["id"]=>
        string(1) "2"
        ["pid"]=>
        string(1) "1"
        ["name"]=>
        string(3) "错"
        ["tip"]=>
        string(18) "撒的方式地方"
        ["grade"]=>
        string(1) "0"
      }
    }
  }
}
  • 回答于 2017-03-15 10:05 举报

    groupby分组单独用就只能显示每组第一条,所以一般guroupby是用来统计数据的比如每组的条数,某个值的和什么的的,要全显示数据的话最好是用排序orderby

    觉得很赞
  • 回答于 2017-03-16 16:36 举报

    mysql中有一个GROUP_CONCAT(expr),可以与group一起使用。

  • 回答于 2017-03-20 09:32 举报

    显示某一条,groupby,正好

    1 条回复
    回复于 2017-03-20 09:33 回复

    补一个,我想问问,表关联的时候,为什么不直接在model连接,这样就不用joinwith了吧,

  • 回答于 2017-03-23 11:39 举报

    你这种情况直接取数组 然后 foreach 自己 来实现格式化不是更好? group本来就只有一条。

您需要登录后才可以回答。登录 | 立即注册
sycamore
见习主管

sycamore

注册时间:2016-11-17
最后登录:2018-05-01
在线时长:11小时40分
  • 粉丝1
  • 金钱145
  • 威望0
  • 积分255

热门问题