以下sql查询的等效cakephp find查询是什么?
假设 price_date字段类型为datetime
$sql = "SELECT id,product_id,date_format("%Y-%m-%d",price_date) AS pd from products"
不喜欢这个$this->Product->query($sql);
我希望它像$this->Product->find('...
答案 0 :(得分:1)
您必须在产品型号中将其定义为virtualField:
class Product extends AppModel {
public $virtualFields = array(
'pd' => 'date_format(price_date, "%Y-%m-%d")'
);
}
然后price_date
将始终以Y-m-d格式返回,别名为pd
,就像它是数据库中的字段一样。如果您希望它以其他名称返回,只需更改数组中的键即可。使用它作为查找,您可以简单地:
$this->Product->find('all', array(
'fields' => array('id', 'product_id', 'pd')
));
答案 1 :(得分:0)
试试这个:
$this->Product->find('all', array(
'recursive' => -1,
'fields' => array('id', 'product_id', 'date_format("%Y-%m-%d",price_date) AS pd from products')
));
答案 2 :(得分:0)
只需在find()
字段数组中指定它:
'fields' => array(
//...
'date_format("%Y-%m-%d", price_date)',
//...
)