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

时间:2015-11-13 09:55:13

标签: yii autocomplete yii2 yii2-advanced-app

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

<?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.
                 }")],
                 ]);
            ?>
 

自动完成正常,它会显示所有&#39;成员的名字。 但是可能会有许多名字相似的人,所以我想要的是连接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...']);
?>

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

2 个答案:

答案 0 :(得分:4)

试试这种方式

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

答案 1 :(得分:0)

如果需要2个字段之间的空格,请使用以下方法:

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

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