在 find('list') 中使用多个 valueField

Ise*_*ngo 0 cakephp find cakephp-3.x

尝试在我的查找方法中使用多个字段 -

$users = $this->AdressesUsers->users->find('list', [
            'keyField' => 'id',
            'valueField' => ['firstname','lastname'],            
        ]);
Run Code Online (Sandbox Code Playgroud)

有效,有点。因为两者之间用分号隔开。也尝试过使用 mutator 方法,但这失败了。

在我的函数中

'valueField' => function ($e) {
        return $e->author->get('full_name');
    }
Run Code Online (Sandbox Code Playgroud)

在我的实体用户中

protected function _getFullName()
    {
        return $this->firstname . '  ' . $this->lastname;
    }
Run Code Online (Sandbox Code Playgroud)

mar*_*ark 5

我永远不会弄乱实体,让它没有逻辑并且尽可能简单。

这里更好的方法是使用您已经尝试过的方法:

'valueField' => function ($e) {
    return $e->first_name . ' ' . $e->last_name . ' ' . $e->more;
}
Run Code Online (Sandbox Code Playgroud)

等等 只需在此处 debug() 实体,您就会看到它包含整个数据集,您可以根据需要将其组合在一起。