Отношения в Laravel

У меня есть две таблицы, Galleries и Gallery_items. В Galleries я сохраняю информацию, например, кто автор. В Gallery_items я сохраняю каждую картинку, которая есть в галерее.

Теперь я хочу получить первое изображение в каждой галерее, где название — mona lisa, и где автор — Леонардо да Винчи< /сильный>.

Я тестировал:

Gallery_items::group_by('gallery_id')->where('title', '=', 'mona lisa')->gallery()->where('author', '=', 'Leonardo da Vinci');

Но это не работает. Я получаю сообщение об ошибке Method [gallery] is not defined on the Query class..

Но я добавил в модель галерею().

class Gallery_items extends Eloquent
{
    public function gallery()
    {
        return $this->belongs_to('gallery');
    }
}

Есть идеи, как мне поступить? Возможно ли это даже с одним запросом? "Ограничение нетерпеливой загрузки" может быть ответом (я не понимаю что это)?


person Sawny    schedule 11.01.2013    source источник


Ответы (2)


Благодаря @AndHeiberg я начал видеть проблему с другой точки зрения, и теперь я решил проблему, используя оператор JOIN.

Gallery_items::join('gallery', 'Gallery_items.gallery_id', '=', 'gallery.id'))->group_by('gallery_id')->where_title_and_author('Mona Lisa', 'Leonardo da Vinci');
person Sawny    schedule 11.01.2013

Это должно работать:

Gallery_items->group_by('gallery_id')->where_title_and_author('Mona Lisa', 'Leonardo da Vinci');
person AndHeiberg    schedule 11.01.2013
comment
Нет, потому что Gallery_items не имеет столбца с именем author. Это Gallery, у которого есть этот столбец. - person Sawny; 11.01.2013