如何在cakephp中更改表列的Mysql DATE_FORMAT?

时间:2014-04-10 14:47:47

标签: mysql cakephp

以下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('...

3 个答案:

答案 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)',
    //...
)