как я могу объединить first_name и last_name два разных поля базы данных, чтобы назначить их для раскрывающегося списка в CakePHP, используя 'list' в операторе find - PullRequest
1 голос
/ 02 августа 2011
$swimmer = $this->Swimmer->find('list', array(
    'conditions' => array('Swimmer.group' => $this->data['Swimmer']['group_id']),
    'order' => array('Swimmer.first_name ASC'),
    'fields' => 'Swimmer.first_name'
));

Ответы [ 3 ]

7 голосов
/ 02 августа 2011

Прежде всего, настройте виртуальное поле в вашей модели пловца, как это было предложено Энн Фам.Например:

var $virtualFields = array(
    'name' => "CONCAT(Swimmer.first_name, ' ', Swimmer.last_name)"
);

Затем выберите данные для вашего выпадающего списка следующим образом: (при условии контроллера Swimmers)

$this->Swimmer->find('list', array('fields' => array('Swimmer.id', 'Swimmer.name')));

Вы также можете попробовать сделать это в своей модели SwimmerModel:var $displayName = 'Swimmer.name'; (не уверен на 100%, будет ли это работать).Если это сработает, вам не понадобится массив 'fields' в поиске.

0 голосов
/ 21 сентября 2017

Другой подход заключается в объединении поля на лету в списке полей.

Пример:

$swimmer = $this->Swimmer->find('list',
array(
    'conditions' => array(
        'Swimmer.group' => $this->data['Swimmer']['group_id']),
    'order' => array(
        'Swimmer.first_name ASC'
    ),
    'fields' => 'CONCAT(Swimmer.first_name, " ", Swimmer.first_name) AS full_name'
));
0 голосов
/ 02 августа 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...