CakePHP中的虚拟字段上的子串+ Concat - 可能吗?

时间:2011-05-25 15:29:14

标签: php cakephp substr concat

这似乎是一个简单的问题,但我无法让它发挥作用。我创建了一个结合了名称和地址的虚拟字段:

var $virtualFields = array(
    'name_address' => 'CONCAT(Venue.name, " - ", Venue.address)'
);

有没有办法在此使用SUBSTR? (PHP或MYSQL很好 - 无论哪个最好/有效)。

我试过这个(无济于事):

'name_address' => 'SUBSTR(CONCAT(Venue.name, " - ", Venue.address),0,50)'

我还在CONCAT中的各个字段上尝试过SUBSTR。

1 个答案:

答案 0 :(得分:2)

这绝对没问题。您唯一的错误是,您认为MySQL中的SUBSTRING函数的工作方式类似于PHP中计数从零开始的函数。 但由于这不是PHP,你必须从1开始计算,一切都会正常。

只需像这样使用你的虚拟场,它应该像你想要的那样工作:

var $virtualFields = array(
    'name_address' => 'SUBSTRING(CONCAT(Venue.name, " - ", Venue.address),1,50)'
);

另外,请阅读SUBSTRING函数in the MySQL manual