Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Недавно начал изучать Laravel и не до конца понимаю логику Eloquent. Подскажите, пожалуйста, как правильно сделать следующее:
Есть три таблицы: альбомы, группы и композиции. Таблица композиций связана внешними ключами с альбомами и группами.
CREATE TABLE `albums` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`album_name` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
CREATE TABLE `bands` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`band_name` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
CREATE TABLE `tracks` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`band_id` int(11) NOT NULL,
`album_id` int(11) NOT NULL,
`track_name` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
KEY `band_id` (`band_id`),
KEY `album_id` (`album_id`)
) ENGINE=InnoDB;
ALTER TABLE `tracks`
ADD CONSTRAINT `tracks_ibfk_2` FOREIGN KEY (`album_id`) REFERENCES `albums` (`id`),
ADD CONSTRAINT `tracks_ibfk_1` FOREIGN KEY (`band_id`) REFERENCES `bands` (`id`);
Подскажите, каким методом получить список композиций, вместе с названиями альбомов и групп, используя ORM?
Т.е. аналог sql запроса
SELECT tracks.id, track_name, album_name, band_name
FROM tracks, bands, albums
WHERE tracks.album_id = albums.id
AND tracks.band_id = bands.id
Подозреваю, что у меня совсем простой вопрос, но я раньше с ORM не сталкивался.
Изменено Krapetor (19.09.2014 12:56:38)
Не в сети
http://laravel.com/docs/eloquent#eager-loading
В модели Треков прописывайте отношения к Альбомам и Брендам (belongsTo), а в запросе на Треки используйте with() на нужные свойства. Полученные объекты Треков будут иметь данные по обоим этим признакам ($track->brand, $track->album)...
Не в сети
Спасибо, все очень просто оказалось
Не в сети
Страницы 1