Выборка из базы для dataProvider

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

Выборка из базы для dataProvider

Сообщение dadids »

Есть две таблицы вакансии и отклики.

В вакансиях есть hasmany relation:

public function getResponse()
{
return $this->hasMany(Response::className(), ['vid' => 'vid']);
}

CREATE TABLE IF NOT EXISTS `vacancy` (
`uid` int(10) unsigned NOT NULL,
`cid` int(10) unsigned NOT NULL,
`vid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`position` int(10) NOT NULL,
`salary` int(10) DEFAULT NULL,
`acompany` 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`)
)

CREATE TABLE IF NOT EXISTS `response` (
`rid2` int(10) unsigned NOT NULL AUTO_INCREMENT,
`rid` int(10) unsigned NOT NULL,
`cid` int(10) unsigned NOT NULL,
`vid` int(10) unsigned NOT NULL,
`role` tinyint(3) DEFAULT NULL,
`created` int(11) NOT NULL,
`recived` int(11) DEFAULT NULL,
`status` tinyint(3) DEFAULT NULL,
PRIMARY KEY (`rid2`)
)

Как выбрать из таблицы вакансий те на которые нет отклика с response.rid = 235

Пробовал так:

$query = Vacancy::find()
->joinWith('response')
->select('vacancy.vid')
->where('response.rid <> 235');

Но не получается.
Последний раз редактировалось dadids 2015.02.13, 18:32, всего редактировалось 2 раза.
Demon_id
Сообщения: 421
Зарегистрирован: 2011.10.29, 00:13

Re: Выборка из базы для dataProvider

Сообщение Demon_id »

примерно так:

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

$query = static::find();
    ->joinWith(['response'])    // relation getResponse()
    ->where('response.rid!=1') 
dadids
Сообщения: 26
Зарегистрирован: 2014.03.08, 19:47

Re: Выборка из базы для dataProvider

Сообщение dadids »

Demon_id писал(а):примерно так:

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

$query = static::find();
    ->joinWith(['response'])    // relation getResponse()
    ->where('response.rid!=1')
Дим он все равно выдает запись с response.rid=235 Вот смотри что на выходе


Array
(
[0] => Array

~~~~~~~~~~~~~~~~~~~~~~~~~~

[1] => Array
(
[vid] => 1
[response] => Array
(
[0] => Array
(
[rid2] => 1
-------------------------------------------------------------------------------------------------------------------------------
[rid] => 235
-------------------------------------------------------------------------------------------------------------------------------
[cid] => 1
[vid] => 1
[role] => 1
[created] => 1420543984
[recived] =>
[status] => 2
)

[1] => Array
(
[rid2] => 5
[rid] => 186
[cid] => 1
[vid] => 1
[role] => 2
[created] => 1423751738
[recived] =>
[status] => 1
)

[2] => Array
(
[rid2] => 6
[rid] => 97
[cid] => 1
[vid] => 1
[role] => 2
[created] => 1423751991
[recived] =>
[status] => 1
)

~~~~~~~~~~~~~~~~~~~~~~~~~~

[27] => Array
(
[rid2] => 56
[rid] => 203
[cid] => 1
[vid] => 1
[role] => 2
[created] => 1423772968
[recived] =>
[status] => 1
)

)

)

)
Ответить