вывод данных с помощью ListView

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
dadids
Сообщения: 26
Зарегистрирован: 2014.03.08, 19:47

вывод данных с помощью ListView

Сообщение dadids »

Пытаюсь вывести данные из нескольких таблиц с разной структурой с помощью SqlDataProvider. В таблице вакансии есть ячейка позиция и есть таблица проекты в ней есть ячейка название вот эти данные нужно вывести в одном списке с помощью ListView. Что то не получается)
dadids
Сообщения: 26
Зарегистрирован: 2014.03.08, 19:47

Re: вывод данных с помощью ListView

Сообщение dadids »

Контроллер

$uid = Yii::$app->user->identity->uid;
$count = Yii::$app->db->createCommand('SELECT COUNT(*) FROM vacancy, project WHERE vacancy.uid=:uid OR project.uid = :uid', [':uid' => $uid])->queryScalar();
$dataProvider = new SqlDataProvider([
'sql' => 'SELECT vacancy.uid, vacancy.position, vacancy.vid, project.uid, project.pid, project.title FROM vacancy, project WHERE vacancy.uid = :uid OR project.uid = :uid',
'params' => [':uid' => $uid],
'totalCount' => (int)$count,
'pagination' => ['pageSize' => 20]]);

return $this->render('index', [
'dataProvider' => $dataProvider
]);

Таблицы

CREATE TABLE IF NOT EXISTS `project` (
`uid` int(10) DEFAULT NULL,
`pid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) CHARACTER SET utf8 NOT NULL,
`salary` int(10) DEFAULT NULL,
`paymentfor` int(3) DEFAULT NULL,
`content` longtext CHARACTER SET utf8 NOT NULL,
`region` tinyint(3) DEFAULT NULL,
`city` tinyint(3) DEFAULT NULL,
`scope` int(9) NOT NULL,
`status` int(1) NOT NULL,
`expire` int(11) DEFAULT NULL,
`edited` int(11) DEFAULT NULL,
`created` int(11) NOT NULL,
PRIMARY KEY (`pid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `vacancy` (
`uid` int(10) unsigned NOT NULL,
`vid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`position` int(10) NOT NULL,
`salary` int(10) DEFAULT NULL,
`company` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`experience` tinyint(3) DEFAULT NULL,
`employment` int(3) DEFAULT NULL,
`content` longtext CHARACTER SET utf8 NOT NULL,
`region` tinyint(3) DEFAULT NULL,
`city` tinyint(3) DEFAULT NULL,
`scope` int(9) NOT NULL,
`status` int(1) NOT NULL,
`expire` int(11) DEFAULT NULL,
`edited` int(11) DEFAULT NULL,
`created` int(11) NOT NULL,
PRIMARY KEY (`vid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

В обоих таблицах есть записи, но выводится одна запись и она повторяется 6 раз или 3 раза в зависимости от количества записей в обоих таблицах.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: вывод данных с помощью ListView

Сообщение zelenin »

вопрос заключается в исправлении sql-запроса? sql-запрос выдает одно, но выводится другое или выводится то же что возвращает запрос?
dadids
Сообщения: 26
Зарегистрирован: 2014.03.08, 19:47

Re: вывод данных с помощью ListView

Сообщение dadids »

Запрос ошибочный, я не знаю как построить запрос так чтоб на выходе был единый список из вакансий и проектов.

Во первых я получаю не верный список. Во-вторых представлении для названия ссылки я буду использовать либо $model['position'] либо $model['title'] а в соответствующих таблицах нет таких ячеек
Последний раз редактировалось dadids 2014.08.30, 20:41, всего редактировалось 1 раз.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: вывод данных с помощью ListView

Сообщение zelenin »

dadids писал(а):Запрос ошибочный, я не знаю как построить запрос так чтоб на выходе был единый список из вакансий и проектов
правильно поставленный вопрос - половина ответа.
делайте запрос в таком виде:

Код: Выделить всё

select vacancy.uid as field1, vacancy.position as field2, vacancy.vid as field3 from vacancy where vacancy.uid = :uid union select project.uid as field1, project.pid as field2, project.title as field3 from project where project.uid = :uid'
в виджете обращайтесь к атрибутам field1, field2, field3.
Если я неправильно вас понял, приведите примеры данных и желаемый вид списка
dadids
Сообщения: 26
Зарегистрирован: 2014.03.08, 19:47

Re: вывод данных с помощью ListView

Сообщение dadids »

Зеленин, спасибо большое. Есть небольшие шероховатости, но это мелочи сам справлюсь. Спасибо
Ответить