Laravel - 多重关系 Eloquent
Laravel - Multiple relationships Eloquent
我刚开始学习 laravel,我正在为 Eloquent 人际关系而苦苦挣扎!
我有两个表,它们都是 multi-level:
帕吉纳斯-
- IdPagina PK
- 名字
- Parent
示例:
idPagina name parent
1 A Null
2 B 1
类别 -
- IdCategoria PK
- 名字
- Parent
IdPagina - FK
示例:
idCategoria name parent idPagina
1 C Null 2
2 D 1 2
嗯...所以我想得到这样的东西:
A - Parent
B - (A's)Child
C - (B) Child
D - (C) Child
然后我有Paginas模型:
class Paginas extends Eloquent{
public function children() {
return $this->hasMany('app\paginas', 'parent', 'idPagina');
}
public static function tree() {
return static::with(implode('.', array_fill(1, 10, 'children')))->where('parent', '=', null)->get();
}}
和分类模型:
class Categoria extends Eloquent{
public function children() {
return $this->hasMany('app\categoria', 'parent', 'idCategoria');
}
public static function tree() {
return static::with(implode('.', array_fill(1, 10, 'children')))->where('parent', '=', null)->get();
}
}
现在我只想加入两个表!
已编辑
好吧,我刚刚添加了 Stephen Lewis 建议的代码!
但是现在我无法得到我想要的multi-level,这里是blade代码
@foreach($paginas as $pagina)
<h1>{{$pagina -> nomePag}}</h1>
@foreach ($pagina -> children as $child)
<h3>{{$child -> nomePag}}</h3>
@foreach($pagina -> categorias as $categoria)
{{$categoria -> nomeCat}}
@endforeach
@endforeach
@endforeach
好吧,我只是无法获得与 $pagina 相关的 $categoria -> children
将此添加到 Categoria
class:
public function pagina()
{
return $this->belongsTo('Pagina', 'idPagina');
}
您还可以通过将此添加到 Pagina
class:
来指定关系的另一方
public function categorias()
{
return $this->hasMany('Categoria', 'idPagina');
}
有关如何使用 Eloquent 关系的更多信息可用 in the docs。
我刚开始学习 laravel,我正在为 Eloquent 人际关系而苦苦挣扎! 我有两个表,它们都是 multi-level:
帕吉纳斯-
- IdPagina PK
- 名字
- Parent
示例:
idPagina name parent
1 A Null
2 B 1
类别 -
- IdCategoria PK
- 名字
- Parent
IdPagina - FK
示例:
idCategoria name parent idPagina 1 C Null 2 2 D 1 2
嗯...所以我想得到这样的东西:
A - Parent
B - (A's)Child
C - (B) Child
D - (C) Child
然后我有Paginas模型:
class Paginas extends Eloquent{
public function children() {
return $this->hasMany('app\paginas', 'parent', 'idPagina');
}
public static function tree() {
return static::with(implode('.', array_fill(1, 10, 'children')))->where('parent', '=', null)->get();
}}
和分类模型:
class Categoria extends Eloquent{
public function children() {
return $this->hasMany('app\categoria', 'parent', 'idCategoria');
}
public static function tree() {
return static::with(implode('.', array_fill(1, 10, 'children')))->where('parent', '=', null)->get();
}
}
现在我只想加入两个表!
已编辑
好吧,我刚刚添加了 Stephen Lewis 建议的代码! 但是现在我无法得到我想要的multi-level,这里是blade代码
@foreach($paginas as $pagina)
<h1>{{$pagina -> nomePag}}</h1>
@foreach ($pagina -> children as $child)
<h3>{{$child -> nomePag}}</h3>
@foreach($pagina -> categorias as $categoria)
{{$categoria -> nomeCat}}
@endforeach
@endforeach
@endforeach
好吧,我只是无法获得与 $pagina 相关的 $categoria -> children
将此添加到 Categoria
class:
public function pagina()
{
return $this->belongsTo('Pagina', 'idPagina');
}
您还可以通过将此添加到 Pagina
class:
public function categorias()
{
return $this->hasMany('Categoria', 'idPagina');
}
有关如何使用 Eloquent 关系的更多信息可用 in the docs。