繁体   English   中英

ownTo–hasOne 关系返回 null

[英]belongsTo–hasOne relationship returns null

我试图在 Laravel 中建立关系,当我使用hasOne关系时,它返回 null。

表格格式是这样的:

┌─────────┐   ┌─────────────────┐   ┌───────────────┐
│ socio   │ ← │ socioGf         │ → │ grupoFamiliar │
├─────────┤   ├─────────────────┤   ├───────────────┤
│ id      │   │ idSocio         │   │ id            │
│         │   │ idGrupoFamiliar │   │               │
└─────────┘   └─────────────────┘   └───────────────┘

这是我的代码:

模型SocioGf :

...
public function grupoFamiliar(){
     return $this->hasOne('App\GrupoFamiliar','id','idGrupoFamiliar')
     ->toSql();
}
public function socio(){
     return $this->hasOne('App\Socio','id','idSocio');
}
...

模范socio

...
public function socioGf(){
        return $this->belongsTo('App\SocioGf', 'idSocio', 'id');
}  
...

模型组grupoFamiliar

...
public function socioGf(){
        return $this->belongsTo('App\SocioGf', 'idGrupoFamiliar','id');
} 
...

在我的grupoFamiliarController我返回:

$gruposFamiliares = GrupoFamiliar::paginate($this->paginateNumber);        
return view('gruposFamiliares',compact('gruposFamiliares'));

所以在gruposFamiliares.blade.php我尝试以这种方式访问​​:

@forelse($gruposFamiliares as $grupoFamiliar)
    {{dd($grupoFamiliar->socioGf)}}
    @foreach($grupoFamiliar->socioGf() as $gf)
        {{dd($gf->socio)}}
    @endforeach
@endforelse

在第二行中, dd显示了一个空变量,知道为什么吗?

你需要的是关系belongsToMany

在模型socio

...
public function gruposFamiliares(){
    return $this->belongsToMany(GrupoFamiliar::class, 'socioGf_table', 'socioId', 'grupoFamiliarId');
}
...

在模型grupoFamiliar

...
public function socios(){
    return $this->belongsToMany(Socio::class, 'socioGf_table', 'grupoFamiliarId', 'socioId');
}
...

然后,您可以像这样访问sociosgruposFamiliares

$socio->gruposFamiliares()->get();
$grupoFamiliar->socios()->get();

这些行中的每一行都将返回 Socios 和 GruposFamiliares 的集合。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM