Laravel Eloquent 关系(3 个表)
Laravel Eloquent relationship (3 tables)
我在数据库中有 3 个 table
1.Volume:id,volume,number,...
2.Papers:id,volume_id,标题,...
3.Editor_name:id,idP(论文ID),名字...
'Papers' table 的列 'volume_id' 来自 'Volume' 并且 'Editor_name' 的 'idP' 列连接到 'Papers' table 列 'id'.
我不知道使用哪种方法(hasMany 或 hasManyThrough)以及如何在控制器(VolumeController)中定义函数。
我有 3 个模型(卷、论文、姓名)
体积模型:
public function names()
{
return $this->hasManyThrough(Names::class, Papers::class,'volume_id','idP','id','id',);
}
或:
体积模型:
public function papers()
{
return $this->hasMany(Papers::class,'volume_id');
}
论文模型 :
public function volume()
{
return $this->belongsTo(Volume::class,'volume_id');
}
public function names()
{
return $this->hasMany(EditorName::class,'idP');
}
命名模型 :
public function papers()
{
return $this->belongsTo(Papers::class,'idP');
}
而我想要的是:
URI /volume/1/1
第 1 卷第 1 期
标题 1
编辑 1 编辑 2 编辑 3
标题 2
编辑 4 编辑 5
标题 3
编辑 6 编辑 7 编辑 8 ...
URI /volume/1/2
第 1 卷第 2 期
标题 4
编辑 9 编辑 10 编辑 11
标题 5
编辑 12
音量控制器
public function papers($id){
$papers = Papers::all()->where('volume_id',$id);
return view('volume_ID',compact('papers'));
}
体积模型:
public function names()
{
return $this->hasManyThrough(Names::class, Papers::class,'volume_id','idP','id','id',);
}
public function papers()
{
return $this->hasMany(Papers::class,'volume_id');
}
在控制器中:
$id = 1;
$q = Volume::with('names', 'papers')->findOrFail($id);
Blade :
Volume : {{ $q->volume }}
Number : {{ $q->number }}
@foreach($q->papers as $paper)
Paper Title : {{ $paper->title }}
@endforeach
@foreach($q->names as $name)
Name : {{ $name->name }}
@endforeach
我在数据库中有 3 个 table
1.Volume:id,volume,number,...
2.Papers:id,volume_id,标题,...
3.Editor_name:id,idP(论文ID),名字...
'Papers' table 的列 'volume_id' 来自 'Volume' 并且 'Editor_name' 的 'idP' 列连接到 'Papers' table 列 'id'.
我不知道使用哪种方法(hasMany 或 hasManyThrough)以及如何在控制器(VolumeController)中定义函数。
我有 3 个模型(卷、论文、姓名)
体积模型:
public function names()
{
return $this->hasManyThrough(Names::class, Papers::class,'volume_id','idP','id','id',);
}
或:
体积模型:
public function papers()
{
return $this->hasMany(Papers::class,'volume_id');
}
论文模型 :
public function volume()
{
return $this->belongsTo(Volume::class,'volume_id');
}
public function names()
{
return $this->hasMany(EditorName::class,'idP');
}
命名模型 :
public function papers()
{
return $this->belongsTo(Papers::class,'idP');
}
而我想要的是:
URI /volume/1/1
第 1 卷第 1 期
标题 1
编辑 1 编辑 2 编辑 3
标题 2
编辑 4 编辑 5
标题 3
编辑 6 编辑 7 编辑 8 ...
URI /volume/1/2
第 1 卷第 2 期
标题 4
编辑 9 编辑 10 编辑 11
标题 5
编辑 12
音量控制器
public function papers($id){
$papers = Papers::all()->where('volume_id',$id);
return view('volume_ID',compact('papers'));
}
体积模型:
public function names()
{
return $this->hasManyThrough(Names::class, Papers::class,'volume_id','idP','id','id',);
}
public function papers()
{
return $this->hasMany(Papers::class,'volume_id');
}
在控制器中:
$id = 1;
$q = Volume::with('names', 'papers')->findOrFail($id);
Blade :
Volume : {{ $q->volume }}
Number : {{ $q->number }}
@foreach($q->papers as $paper)
Paper Title : {{ $paper->title }}
@endforeach
@foreach($q->names as $name)
Name : {{ $name->name }}
@endforeach