Я пытаюсь упорядочить свои результаты немного сложным способом. Я создал виртуальное поле под названием «приоритет», чтобы упорядочить результаты по. Вот мой код:
public $virtualFields = array(
'priority'=>'(Venue.featured * 5000) + (Venue.views * 2) + ((Venue.image_count > 0) * 500)',
);
Теперь это всегда возвращает только значение ((Venue.image_count> 0) * 500), т.е. либо 500, либо 0. Если я удаляю эту часть поля, оставляя:
public $virtualFields = array(
'priority'=>'(Venue.featured * 5000) + (Venue.views * 2)',
);
Ожидаемый результат дается. Я также хочу добавить еще один компонент в поле, который имеет тот же эффект. Код:
public $virtualFields = array(
'priority'=>'(Venue.featured * 5000) + (Venue.views * 2) + ((CHAR_LENGTH(Venue.blurb) > 0) * 500)',
);
В этом случае, опять же, поле всегда равно 500 или 0, а не полному значению всех полей.
Я не понимаю, что происходит! Если я создаю виртуальное поле, которое измеряет либо image_count, либо CHAR_LENGTH (Venue.blurb), оно работает нормально, но добавление любого из них в другие части поля приводит к сбою.