I currently have 3 classes Elements, PageElements and Page. The Models are below:
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
{
//
}
All the data I need is from Elements, I can throw the PageElements data away, how can I convert this to use a hasManyThrough relationship?
I would like to directly access the Elements via $page->elements, currently I have to do $page->elements->element.
Am I right in thinking this should be a hasManyThrough relationship?
My current attempt is below
public function elements() {
return $this->hasManyThrough(Elements::class, PageElements::class, 'element_id', 'id', 'id', 'page_id');
}
Though is always returns an empty dataset
It seems I did indeed have the keys mixed up as Jonas mentioned, but just not in that order. My relationship was pairing based off of the wrong id's. The following is correct