如何将两列连接成 yii2 中的自动完成字段?

How to concatenate two columns into an autocomplete field in yii2?

我的视图中有一个自动完成字段,其代码如下

<?php
            $data = Members::find()
            ->select(['first_name as value', 'first_name as  label','id as id'])
            ->asArray()
            ->all();

            echo 'Name' .'<br>';
            echo AutoComplete::widget([
                 'name' => 'member_name',    
                 'clientOptions' => [
                    'source' => $data,
                    'minLength'=>'3', 
                    'autoFill'=>true,
                    'select' => new JsExpression("function( event, ui ) {
                    $('#receipt-member_id').val(ui.item.id);//#receipt-member_id is the id of hiddenInput.
                 }")],
                 ]);
            ?>

自动完成工作正常,它显示所有 'members' 的名字。 但是可能有很多名字相似的人,所以我想要的是连接 first_name 和 last_name。在正常的下拉菜单中,可以按如下方式完成

<?php
    $models1 = Members::find()->all();
    $data = array();
    foreach ($models1 as $model1)
        $data[$model1->id] = $model1->first_name . ' '. $model1->last_name;

    echo $form->field($model, 'member_id')->dropDownList(
                                $data,
                                ['prompt'=>'Select...']);
?>

我如何使用自动完成小部件执行此操作?

试试这个方法

     $data = Members::find()
        ->select(['concat(first_name,last_name) as value', 'first_name as  label','id as id'])
        ->asArray()
        ->all();

如果您需要在 2 个字段之间 space,请使用:

$data = Members::find()
    ->select(['concat(first_name, SPACE(1), last_name) as name', 'first_name as  label','id as id'])
    ->asArray()
    ->all();

SPACE() 方法将生成 space 根据您输入的特定数字,为您 :D