我目前正在使用带有typeahead basic的Yii2。我试图从mysql表中获取数据,即'staff_name'
目前我正在按照指南进行操作,这是我的代码(我先将所有内容放在视图中进行测试(模型存在但没有定义),
$data = [
'Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado',
'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii',
'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana',
'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota',
'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire',
'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota',
'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island',
'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont',
'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'
];
<?php $form = ActiveForm::begin()?>
<?=$form->field($model, 'staff_name')->widget(TypeaheadBasic::classname(), [
'data' => $data,
'options' => ['placeholder' => 'Filter as you type ...'],
'pluginOptions' => ['highlight'=>true],
]);?>
<?php ActiveForm::end(); ?>
当我像这样硬编码时,它工作正常。但我需要有关如何获取mysql表中的staff_name列数据的帮助。我试过类似:$data = [StaffMain::find()->all()];
的东西,但是当我输入时,我在textinput字段中得到一个'null'。
编辑:基于scaisEdge答案,我不得不稍微改变一下查询。
$data = Yii::$app->db->createCommand('SELECT staff_name FROM staff_main')->queryColumn();
OR
$data = StaffMain::find()->select(['staff_name'])->asArray()->column();
答案 0 :(得分:1)
如果只需要使用StaffMain模型列staff_name的结果填充$ data,则应使用
<?php $form = ActiveForm::begin()?>
<?=$form->field($model, 'staff_name')->widget(TypeaheadBasic::classname(), [
'data' => StaffMain::find()->select('staff_name')->asArray()column(),
'options' => ['placeholder' => 'Filter as you type ...'],
'pluginOptions' => ['highlight'=>true],
]);?>
<?php ActiveForm::end(); ?>
或
$data = StaffMain::find()->select('staff_name')->asArray()column();
<?php $form = ActiveForm::begin()?>
<?=$form->field($model, 'staff_name')->widget(TypeaheadBasic::classname(), [
'data' => $data,
'options' => ['placeholder' => 'Filter as you type ...'],
'pluginOptions' => ['highlight'=>true],
]);?>