我有一个名为'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);
答案 0 :(得分:1)
查看有关find('list')
如何运作的documentation
$allyears = $this->TimesheetDates->find('list', [
'keyField' => 'id',
'valueField' => 'year']
)
->group(['year'])
->order(['year'=> 'ASC']);
请注意,当您按id
分组时,选择TimesheetDates
表的year
没有任何意义,并且在共享的所有记录之间随机选择id
同年