无法从cakephp3中的查询中获取int字段的组

时间:2016-09-28 00:24:37

标签: php cakephp cakephp-3.0

我有一个名为'year'的表格。它在列中有很多重复,所以我想找到不同的组。我在大约20行中有4个不同的'年',我从查询中得不到这些值。相反,返回的是4个不是年份的数字(5,14,4,70)。当我在另一个表中使用郊区字段时,相同的代码工作得很好,这个字段有多个值。我不明白为什么这不起作用。

//in view
  echo $this->Form->input('year', ['label' => 'Year','options' => $allyears]);

//controller
     $allyears = $this->TimesheetDates->find('list')
                   ->select(['TimesheetDates.id', 'TimesheetDates.year'])
                    ->group(['TimesheetDates.year'])->autoFields(true)
                    ->order(['TimesheetDates.year'=> 'ASC'])
                    ->hydrate(false);

$this->set('allyears',$allyears);


//another controller and this code worked fine
  $suburb = $this->Students->find('list')->where(['Students.address_suburb !=' => '','Students.student_inactive' => 0])
            ->select(['Students.id','Students.address_suburb'])
            ->group(['Students.address_suburb'])->autoFields(true)
            ->order(['Students.address_suburb' => 'ASC'])
            ->hydrate(false);

1 个答案:

答案 0 :(得分:1)

查看有关find('list')如何运作的documentation

 $allyears = $this->TimesheetDates->find('list', [
        'keyField' => 'id',
        'valueField' => 'year']
     )
     ->group(['year'])
     ->order(['year'=> 'ASC']);

请注意,当您按id分组时,选择TimesheetDates表的year没有任何意义,并且在共享的所有记录之间随机选择id同年