我怎样才能将first_name和last_name连接两个不同的数据库字段,以便在find语句中使用'list'分配给cakephp中的下拉列表

AJA*_*JAY 1 cakephp

$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'
));
Run Code Online (Sandbox Code Playgroud)

Dun*_*zzz 7

首先,按照Ann Pham的建议在Swimmer模型中设置虚拟场.例如:

var $virtualFields = array(
    'name' => "CONCAT(Swimmer.first_name, ' ', Swimmer.last_name)"
);
Run Code Online (Sandbox Code Playgroud)

然后,像下面这样获取下拉列表的数据:(假设Swimmers控制器)

$this->Swimmer->find('list', array('fields' => array('Swimmer.id', 'Swimmer.name')));
Run Code Online (Sandbox Code Playgroud)

您也可以尝试在SwimmerModel中执行此操作:( var $displayName = 'Swimmer.name';不是100%确定是否可行).如果它确实有效,您将不需要查找中的'fields'数组.