Как сделать dropDownList в Yii?

У меня есть 2 атрибута в модели jobs, они есть tag а также categoryЯ хочу сделать dropDownList, который отображает значение tag у кого есть category равная "зарплата", вот мой код:

$s= CHtml::listData($model2, 'salary', 'tag');                         
echo CHtml::dropDownList('salary', 'salary', $s);

мой дб:

тег / категория

1 / val1

2 / val1

a / val2

1000 / зарплата

2000 / зарплата

но я получил dropDownList, который содержит только последнее значение, которые имеют эти условия. что не так в моем коде?

1 ответ

Решение

Есть две причины, почему вы можете получить только один результат, во-первых, количество результатов, которые вы получаете в $model2 влияет на результаты, проверьте, используете ли вы findAll вернуть все строки, соответствующие условию, а не find а также findByPk поскольку они возвращают только одно значение,

Во-вторых, второй атрибут listData должен быть вашим значением. Поле 'salary' не является атрибутом модели, это должно быть valueField( см. Это).

Он останется таким же, если он назначен как salary - постоянное значение для всех элементов option, означающее, что ваш массив будет перезаписываться для каждого диапазона, оставляя вам массив из одного элемента, содержащий последнее значение.

Вы должны 'tag_id'/'id' или какой-то первичный ключ из вашей модели или значения тега (при условии, что он уникален), чтобы идентифицировать тег по

$model2 = MyModel::model()->findAll("category = salary");
$s= CHtml::listData($model2, 'tag', 'tag');                         
echo CHtml::dropDownList('salary', 'salary', $s,array('empty'=>'--Select--'));
Другие вопросы по тегам