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