Laravel Eloquent HasManyThrough 返回空数组
Laravel Eloquent HasManyThrough returning empty array
我无法从 Eloquent 中的 HasManyThrough 关系获取查询。
这些是我的桌子
页数
- id
- 列
- slideshow_fk
幻灯片
- id
- 列
幻灯片
- id
- 列
- slideshow_id
我的主页模型:
class Page extends Model
{
public function slideshow_id(){
return $this->belongsTo(Slideshow::class);
}
public function slides(){
return $this->hasManyThrough('App\Slide','App\Slideshow','id','slideshow_id','slideshow_fk');
}
}
控制器
$page=Page::where("slug","=",$slug)->with('slides')->first();
查询日志:我不是页面ID:3和slideshow_fk:1,[? = 1]
select `slides`.*, `slideshows`.`id` from `slides` inner join `slideshows` on `slideshows`.`id` = `slides`.`slideshow_id` where `slideshows`.`id` in (?)
页面->幻灯片数组:
[]
PhpMyAdmin SQL copy/paste:
我的页面需要哪些正确的 3 张幻灯片。
为什么我得到一个空数组?
你不能在这里 hasManyThrough() 因为你的实现不支持对一个的需要。
假设您有三个模型 A
、B
和 C
,并且 A
想通过 B
连接到 C
。
那么如果你想使用hasManyThrough()
B
需要 A
的 primary key
作为 foreign key
C
需要 B
的 primary key
作为 foreign key
也就是A <- B <- C
如果我把这个放到你的例子中,你所拥有的是
A
有 B
的 primary key
作为 foreign key
C
有 B
的 primary key
作为 foreign key
也就是A -> B <- C
.
您在这里可以做的是像这样定义模型。
class Pages extends Model
{
public function slideshow()
{
return $this->belongsTo(Slideshow::class);
}
}
class Slideshow extends Model
{
public function slides()
{
return $this->hasMany(Slides::class);
}
}
class Slides extends Model
{
}
并查询
$pags = Pages::with('slideshow.slides')->where('slug', $slug)->first();
我建议使用正确的命名约定。
我无法从 Eloquent 中的 HasManyThrough 关系获取查询。
这些是我的桌子
页数
- id
- 列
- slideshow_fk
幻灯片
- id
- 列
幻灯片
- id
- 列
- slideshow_id
我的主页模型:
class Page extends Model
{
public function slideshow_id(){
return $this->belongsTo(Slideshow::class);
}
public function slides(){
return $this->hasManyThrough('App\Slide','App\Slideshow','id','slideshow_id','slideshow_fk');
}
}
控制器
$page=Page::where("slug","=",$slug)->with('slides')->first();
查询日志:我不是页面ID:3和slideshow_fk:1,[? = 1]
select `slides`.*, `slideshows`.`id` from `slides` inner join `slideshows` on `slideshows`.`id` = `slides`.`slideshow_id` where `slideshows`.`id` in (?)
页面->幻灯片数组:
[]
PhpMyAdmin SQL copy/paste:
我的页面需要哪些正确的 3 张幻灯片。
为什么我得到一个空数组?
你不能在这里 hasManyThrough() 因为你的实现不支持对一个的需要。
假设您有三个模型 A
、B
和 C
,并且 A
想通过 B
连接到 C
。
那么如果你想使用hasManyThrough()
B
需要A
的primary key
作为foreign key
C
需要B
的primary key
作为foreign key
也就是A <- B <- C
如果我把这个放到你的例子中,你所拥有的是
A
有B
的primary key
作为foreign key
C
有B
的primary key
作为foreign key
也就是A -> B <- C
.
您在这里可以做的是像这样定义模型。
class Pages extends Model
{
public function slideshow()
{
return $this->belongsTo(Slideshow::class);
}
}
class Slideshow extends Model
{
public function slides()
{
return $this->hasMany(Slides::class);
}
}
class Slides extends Model
{
}
并查询
$pags = Pages::with('slideshow.slides')->where('slug', $slug)->first();
我建议使用正确的命名约定。