Substring + Concat на виртуальных полях в CakePHP - возможно? - PullRequest
0 голосов
/ 25 мая 2011

Это кажется простым вопросом, но я не могу заставить его работать.Я создал виртуальное поле, которое объединяет имя и адрес:

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

Есть ли способ использовать SUBSTR для этого?(PHP или MYSQL в порядке - какой бы ни был лучший / работает).

Я пробовал это (безрезультатно):

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

Я также пробовал SUBSTR на отдельных поляхв КОНКАТ.

1 Ответ

2 голосов
/ 25 мая 2011

Это абсолютно не проблема. Ваша единственная ошибка в том, что вы думали, что SUBSTRING-функция в MySQL работает так же, как в PHP, где счет начинается с нуля. Но так как это не PHP, вы должны начать отсчет с 1, и все будет работать нормально.

Просто используйте ваше виртуальное поле вот так, и оно должно работать так, как вы хотите:

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

Также ознакомьтесь с функцией SUBSTRING в руководстве по MySQL

...