2011-05-25 107 views
0

这似乎是一个简单的问题,但我无法让它工作。我已经创建了一个组合的名字和地址的虚拟域:CakePHP中虚拟字段上的Substring + 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。

回答

2

这绝对没有问题。你唯一的错误是,你想到了MySQL中的SUBSTRING-函数,就像PHP中的计数从零开始一样。 但由于这不是PHP,你必须从1开始计数,并且所有工作都可以正常工作。

只要用你的virtualField这样,它应该工作就像你想:

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

此外,对SUBSTRING函数读取in the MySQL manual