0

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

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。

4

1 回答 1

2

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

只需像这样使用您的 virtualField,它应该可以像您想要的那样工作:

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

另外,请阅读MySQL 手册中的 SUBSTRING-function

于 2011-05-25T19:48:31.153 回答