deanar
(Rsniper)
July 19, 2009, 3:35pm
1
Есть такая проблемка, никак не могу решить.
Существует 4 таблицы: movies, studies, makers и таблица связи между ними - connector.
movies имеет movie_id | title | catalog
studies - studio_id | name
makers - maker_id | nick
connector - movie_id | studio_id | maker_id
Нужно вытащить список из movies по каталогу и к каждому ролику - студии, которые делали и люди из этой студии которые делали этот ролик и, еще могут быть люди, которые не принадлежат никакой студии (тогда studio_id=0).
Раньше я вытаскивал авторов на один ролик таким запросом:
SELECT studies.name, makers.nick, studies.studio_id , makers.maker_id
FROM connector
INNER JOIN makers
ON connector.maker_id=makers.maker_id
LEFT JOIN studies st
ON connector.studio_id=studies.studio_id
WHERE connector.movie_id=$movie_id
Прошу помочь написать relations. И вообще впринцепи как можно лучше решить такую задачу?
x00xer
(Poidet)
July 19, 2009, 4:14pm
2
Есть такая проблемка, никак не могу решить.
Существует 4 таблицы: movies, studies, makers и таблица связи между ними - connector.
movies имеет movie_id | title | catalog
studies - studio_id | name
makers - maker_id | nick
connector - movie_id | studio_id | maker_id
Нужно вытащить список из movies по каталогу и к каждому ролику - студии, которые делали и люди из этой студии которые делали этот ролик и, еще могут быть люди, которые не принадлежат никакой студии (тогда studio_id=0).
Раньше я вытаскивал авторов на один ролик таким запросом:
SELECT studies.name, makers.nick, studies.studio_id , makers.maker_id
FROM connector
INNER JOIN makers
ON connector.maker_id=makers.maker_id
LEFT JOIN studies st
ON connector.studio_id=studies.studio_id
WHERE connector.movie_id=$movie_id
Прошу помочь написать relations. И вообще впринцепи как можно лучше решить такую задачу?
Вполне справится с этим автогенерация через yiic.
содайте модель а так же CRUD для всего этого добра.
phpdevmd
(Phpdevmd)
July 20, 2009, 10:09am
3
deanar
(Rsniper)
July 20, 2009, 12:27pm
4
У меня relations везде остается пустое, автоматически не генерится. Как-то может по особому нужно составлять структуру БД?
x00xer
(Poidet)
July 20, 2009, 1:36pm
5
а внешние ключи вы объявили(создали) ?
deanar
(Rsniper)
July 23, 2009, 4:43pm
6
создал - пробывал по разному: и в comment на myisam и по нормальному в innodb, после генерации моделей и crud, relations остаются пустые. Определенно, чтото не так делаю, хотя кажется в соответствии с документацией!
Большая просьба выложить дамп db mysql, после которого появится чтото в relations!
duke1999
(Duke1999)
July 24, 2009, 5:27am
7
deanar:
создал - пробывал по разному: и в comment на myisam и по нормальному в innodb, после генерации моделей и crud, relations остаются пустые. Определенно, чтото не так делаю, хотя кажется в соответствии с документацией!
Большая просьба выложить дамп db mysql, после которого появится чтото в relations!
CREATE TABLE `Item` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) collate utf8_unicode_ci NOT NULL default '',
`description` text collate utf8_unicode_ci,
`is_set` tinyint(1) default NULL,
`set_amount` int(3) default NULL,
`is_change` int(1) default NULL,
`is_sale` int(1) default NULL,
`sale_price` decimal(13,2) default '0.00',
`is_visible` tinyint(1) default NULL,
`createTime` int(11) NOT NULL default '0',
`updateTime` int(11) default NULL,
`countryID` int(11) unsigned default '999',
`manufacturerID` int(11) unsigned default NULL,
`sinceTime` int(11) unsigned default NULL,
`volume` decimal(13,2) default NULL,
`type` varchar(45) collate utf8_unicode_ci default NULL,
PRIMARY KEY (`id`),
KEY `FK_item_country` (`countryID`),
KEY `FK_item_manufacturer` (`manufacturerID`),
CONSTRAINT `FK_item_country` FOREIGN KEY (`countryID`) REFERENCES `Country` (`id`) ON DELETE CASCADE,
CONSTRAINT `FK_item_manufacturer` FOREIGN KEY (`manufacturerID`) REFERENCES `Manufacturer` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `Country` (
`id` int(11) unsigned NOT NULL auto_increment,
`name` varchar(255) collate utf8_unicode_ci NOT NULL default '',
`iso_code` varchar(3) collate utf8_unicode_ci NOT NULL default '',
`iso_code2` varchar(3) collate utf8_unicode_ci NOT NULL default '',
`noc_code` varchar(3) collate utf8_unicode_ci NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `Manufacturer` (
`id` int(11) unsigned NOT NULL auto_increment,
`logo` varchar(255) collate utf8_unicode_ci NOT NULL default '',
`description` text collate utf8_unicode_ci NOT NULL,
`name` varchar(255) collate utf8_unicode_ci NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
У меня в туториальном блоге тоже пустые релейшнс были. Yii пока что штудирую между делом, но данный вопрос тоже интересен.
deanar
(Rsniper)
July 30, 2009, 2:08pm
9
Спасибо за помощь, помогло.
unloved
(Unloved Etherway)
July 31, 2009, 6:29am
10
как быть если надо связать таблицы не по PK, а по определенным значениям?
скажем таблицы
house(id,switch,port)
lans(id,switch,port,vlan_id)
vlan(id,name)
house.switch=lans.switch, house.port=lans.port, vlan.id=lans.vlan_id
везде PK - id, просто добавить поле vlan_id в house нельзя
нада сделать связь между house и vlan
как составить relations?