Подстрока объединение виртуальных полей в CakePHP — возможно?

#php #cakephp #substr #concat

#php #cakephp #substr #объединение

Вопрос:

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

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

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

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

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

Я также пробовал SUBSTR для отдельных полей в CONCAT.

Ответ №1:

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

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

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

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