[英]Eloquent one to many relationship not working
我被這些問題困擾了幾個小時,而新的眼睛可能會有所幫助。 我只是不明白缺少了什么。
我連接了一個名為模型User_ativo
和定義兩個一個一對多關系模型Instituicao
和Tipo_Ativo
。
我的數據庫很簡單。 表user_ativo
具有列“ tipo_ativo_id”和“ instituicao_id”。 我有兩個地方都設置為1。我的兩個表測試排instituicoes
和tipo_ativos
只有“ID”和字符串字段“諾姆”(名稱)。 兩者都具有id == 1的記錄。
User_ativo.php:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User_ativo extends Model
{
public function tipo(){
return $this->belongsTo('App\Tipo_ativo');
}
public function instituicao(){
return $this->belongsTo('App\Instituicao');
}
}
Instituicao.php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Instituicao extends Model
{
protected $table = 'instituicoes';
public function user_ativos(){
return $this->hasMany('App\User_ativo');
}
}
Tipo_ativo.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Tipo_ativo extends Model
{
protected $table = 'tipo_ativos';
public function user_ativos(){
return $this->hasMany('App\User_ativo');
}
}
我的獲取日期的控制器方法如下:
public function index()
{
$ativos = User_ativo::with('tipo', 'instituicao')->get();
return view('ativos.index', compact('ativos'));
}
現在這是有趣的地方,由於某種原因我無法弄清楚,當我在視圖中回顯$ ativos變量時,我得到了:
[{"id":1,"user_id":1,"instituicao_id":1,"tipo_ativo_id":1,"tipo":null,"instituicao":{"id":1,"nome":"Banco do Brasil"}}]
因此,我與Instituicao
模型的關系很奇怪,但是與Tipo_ativo
返回null 。
我非常有信心有人會指出所有這些愚蠢而明顯的錯誤,但是我無法終生理解為什么一個有效而另一個卻無效,因為它們幾乎是同一回事。
您的關系名稱不符合Laravel約定。 閱讀以下功能,並為您的關系提供foreign_key
和local_key/owner_key
,然后它將起作用
public function belongsTo($related, $foreignKey = null, $ownerKey = null, $relation = null){}
如果在創建關系時不遵循laravel約定,那么我們必須告訴他們這些是應使用的外鍵和本地鍵。 在這里閱讀更多
class User_ativo extends Model{
public function tipo(){
return $this->belongsTo('App\Tipo_ativo','user_ativo_id'); //second parameter is foreign_key_of_User_avito_table_here
}
public function instituicao(){
return $this->belongsTo('App\Instituicao','user_ativo_id'); //second parameter is foreign_key_of_User_avito_table_here
}
}
class Instituicao extends Model
{
protected $table = 'instituicoes';
public function user_ativos(){
return $this->hasMany('App\User_ativo','instituicao_id'); //second parameter is foreign key of Instituicao model
}
}
class Tipo_ativo extends Model
{
protected $table = 'tipo_ativos';
public function user_ativos(){
return $this->hasMany('App\User_ativo','tipo_ativo_id'); //second parameter is foreign key of Tipo_ativo model.
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.