#php #yii #yii-chtml
#php #yii #yii-chtml
Вопрос:
У меня есть 2 атрибута в модели jobs
, они tag
и category
, я хочу создать выпадающий список, который отображает значение tag
того, у кого category
одинаковая «зарплата», вот мой код:
$s= CHtml::listData($model2, 'salary', 'tag');
echo CHtml::dropDownList('salary', 'salary', $s);
моя БД:
тег / категория
1 / val1
2 / val1
a / val2
1000 / зарплата
2000 / зарплата
но я получил выпадающий список, который содержит только последнее значение, у которого есть эти условия. что не так в моем коде?
Ответ №1:
Есть две причины, по которым вы можете получить только один результат, во-первых, количество результатов, которые вы получаете, $model2
влияет на результаты, проверьте, используете ли вы findAll
для возврата все строки, соответствующие условию, а не find
нет, и findByPk
поскольку они возвращают только одно значение,
Во-вторых, вторым атрибутом listData должно быть ваше поле значений «зарплата» не является атрибутом модели, это должно быть поле значений (см. Это).
Он останется неизменным, если ему присвоено salary
постоянное значение as — для всех элементов 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--'));
Комментарии:
1. но
$model2
будет изменяться каждый раз в зависимости от условий клиента, при первой$model2
инициализацииfindAll()
, затем он будет изменен2. эй, смотрите мой пересмотренный ответ, ваша проблема отличается от того, что я думаю, если вы уже используете use findAll
3. Я изменил
salary
, наcategory
которое указано имя атрибута модели, содержащего значениеsalary
, результат таков: я получил для каждого значенияcategory
последнее значениеtag
, которое соответствуетcategoty
, я покажу вам свою базу данных в вопросе4. Кажется, у вас нет какого-то уникального ключа, вместо этого вы можете использовать значение самого тега дважды, как я сделал сейчас в своем обновленном ответе. Посмотрим, поможет ли это
5. это вернет все значения
tag