我有表呼叫用户,比如
id name amount created
1 a 100 6-16-2016
2 b 200 5-16-2016
我需要最大量的完整行,我尝试了下面的代码,但是语法错误。
$user = $this->Users->find('all',[
'fields' => array('MAX(Users.amount) AS amount'),
]);
答案 0 :(得分:16)
最简单的方式
$user = $this->Users->find('all',[
'fields' => array('amount' => 'MAX(Users.id)'),
]);
使用select而不是options数组
$user = $this->Users->find()
->select(['amount' => 'MAX(Users.id)']);
利用蛋糕SQL函数
$query = $this->Users->find();
$user = $query
->select(['amount' => $query->func()->max('Users.id')]);
以上三者都给出了相同的结果
如果您想要一条记录,则必须在查询对象上调用->first()
:
$user = $user->first();
$amount = $user->amount;
答案 1 :(得分:0)
使用CakePHP 3的最简单方法:
$this->Model->find('all')->select('amount')->hydrate(false)->max('amount')
将导致数组包含该表列中的最大数量。