我正在尝试在表单中添加团队名称(从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')); ?>
它向我显示错过第三个参数的错误。在那种情况下可能是第三个论点???
答案 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 ......