Yii2-mongodb:如何在下拉列表中添加数据库获取的项目

时间:2015-01-16 11:44:14

标签: mongodb yii2

我正在尝试在表单中添加团队名称(从mongoDB获取),以便用户选择表单名称。

我没有得到如何在下拉列表中添加数据库获取的表单名称。 它应首先根据organization_id进行搜索。然后是form_name。

我正在做的是:

  <?= $form->field($model1, 'form_name')->dropDownList(ArrayHelper::map(CreateTeam::find(array('organization_id' => Yii::$app->session['organization_id']))->all(), 'form_name'));  ?>

它向我显示错过第三个参数的错误。在那种情况下可能是第三个论点???

3 个答案:

答案 0 :(得分:2)

我经历了从国家/地区收集记录以国家形式提供记录的问题

我得到的解决方案如下(考虑作为我的州表)

use app\models\Countries;
use yii\helpers\ArrayHelper;

$countries=Countries::find()->all();
$listData=ArrayHelper::map(Countries::find()->all(),function ($model){return  (string)$model->_id;},'name');
echo $form->field($model, 'countries_id')->dropDownList($listData, ['prompt'=>'Select...']);

希望我能让你理解!

答案 1 :(得分:0)

是的,在ArrayHelper::map()中需要前三个参数,所以你肯定错误地调用了这个方法。

查看map()的官方文档。

第二个参数表示数据库中的实际值(通常是主键),第三个是可读文本。

假设您的主键为id,则应为:

$models = CreateTeam::find([
    'organization_id' => Yii::$app->session['organization_id'],
])->all();

$items = ArrayHelper::map($models, 'id', 'form_name');

<?= $form->field($model1, 'form_name')->dropDownList($items) ?>

答案 2 :(得分:0)

    $collection2 = Yii::$app->mongodb->getCollection('teamdashboard');
    $models = $collection2->find(array('organization_id' => Yii::$app-   >session['organization_id']));

    $items = ArrayHelper::getColumn($models, 'team_name');

    return $this->render('teamdashboard', ['model1' => $model1, 'model2' =>  $model2, 'items' => $items]);

这个适用于mongodb ......