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



我正在尝试在表单中添加团队名称(要从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'));  ?>

它向我展示了一个错误,缺少第三个参数。在这种情况下,第三个论点可能是什么???

我遇到了从国家/地区集合中获取记录以以状态形式提供记录的问题

我得到了如下解决方案(考虑到我的状态形式)

use appmodelsCountries;
use yiihelpersArrayHelper;
$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...']);

希望我能让你明白!

    $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]);

这个对君主很好用...

是的,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) ?>

最新更新