簡體   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