在 Laravel 中从单个 hasManyThrough 的多个关系移动
Moving from multiple relationships for a single hasManyThrough in Laravel
我目前有 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
关系?
我想通过 $page->elements
直接访问 Elements
,目前我必须这样做 $page->elements->element
。
我认为这应该是 hasManyThrough
关系对吗?
我目前的尝试低于
public function elements() {
return $this->hasManyThrough(Elements::class, PageElements::class, 'element_id', 'id', 'id', 'page_id');
}
虽然总是returns一个空数据集
看来我确实像 Jonas 提到的那样把钥匙搞混了,只是顺序不对。我的关系是根据错误的 ID 配对的。以下是正确的
public function elements() {
return $this->hasManyThrough(Elements::class, PageElements::class, 'page_id', 'id', 'id', 'element_id');
}
我目前有 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
关系?
我想通过 $page->elements
直接访问 Elements
,目前我必须这样做 $page->elements->element
。
我认为这应该是 hasManyThrough
关系对吗?
我目前的尝试低于
public function elements() {
return $this->hasManyThrough(Elements::class, PageElements::class, 'element_id', 'id', 'id', 'page_id');
}
虽然总是returns一个空数据集
看来我确实像 Jonas 提到的那样把钥匙搞混了,只是顺序不对。我的关系是根据错误的 ID 配对的。以下是正确的
public function elements() {
return $this->hasManyThrough(Elements::class, PageElements::class, 'page_id', 'id', 'id', 'element_id');
}