Переход от нескольких отношений для одного hasManyThrough в Laravel - PullRequest
0 голосов
/ 04 июля 2018

У меня сейчас 3 класса Elements, PageElements и Page. Модели ниже:

Pages.php

class Pages extends Model
{

    public function pageElement() {
        return $this->hasMany(PageElements::class, 'page_id');
    }
}

PageElements.php

class PageElements extends Model
{
    public function element() {
        return $this->hasOne(Elements::class, 'id', 'element_id');
    }
}

Elements.php

class Elements extends Model
{
    //
}

Все данные, которые мне нужны, взяты из Elements, я могу выбросить данные PageElements, как я могу преобразовать это для использования отношения hasManyThrough?

Я хотел бы получить прямой доступ к Elements через $page->elements, в настоящее время я должен сделать $page->elements->element.

Правильно ли я считаю, что это должны быть отношения hasManyThrough?

Моя текущая попытка ниже

public function elements() {
    return $this->hasManyThrough(Elements::class, PageElements::class, 'element_id', 'id', 'id', 'page_id');
}

Хотя всегда возвращает пустой набор данных

1 Ответ

0 голосов
/ 04 июля 2018

Кажется, я действительно перепутал ключи, как упоминал Джонас, но только не в таком порядке. Мои отношения были парными из-за неправильных идентификаторов. Следующее правильно

public function elements() {
    return $this->hasManyThrough(Elements::class, PageElements::class, 'page_id', 'id', 'id', 'element_id');
}
...