我有两张桌子:
ORDERS
------
id
type
LOGS
----
id
order_id
time
我想用cakephp查询,所以我有:
array(
'Order' => array(
'id' => '38',
'type' => 'online',
),
'Log' => array(
'time' => '2014-09-24 21:17:14'
)
)
问题是我只想要最后一个订单,而不是所有日志的所有订单。
我做了类似的事情:
$ordersList = $this->Order->find('all', array(
'fields' => array(
'Order.*',
'Log.time'
),
'joins' => array(
array(
'table' => 'logs',
'alias' => 'Log',
'type' => 'right',
'conditions' => array(
'Log.order_id = Order.id'
),
)
),
);
答案 0 :(得分:1)
要只拥有最后一个,您可以按order
log.time
结果,然后只获取第一条记录(使用参数'first'
或仅获取第一条记录记录)。
例如:
$order = $this->Order->find('first', array(
'order' => array('Log.time' => 'desc')
));
在你的情况下:
$ordersList = $this->Order->find('first', array(
'fields' => array(
'Order.*',
'Log.time'
),
'joins' => array(
array(
'table' => 'logs',
'alias' => 'Log',
'type' => 'right',
'conditions' => array(
'Log.order_id = Order.id'
),
'order' => array('Log.time' => 'desc')
)
),
);
作为信息,如果您想要一个简单的方法来加入模型,请查看containable
行为。通过此行为,链接在模型中设置,然后您只需声明要使用当前模型检索哪个关联模型。
=> http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html