簡體   English   中英

雄辯的一對多關系不起作用

[英]Eloquent one to many relationship not working

我被這些問題困擾了幾個小時,而新的眼睛可能會有所幫助。 我只是不明白缺少了什么。

我連接了一個名為模型User_ativo和定義兩個一個一對多關系模型InstituicaoTipo_Ativo

我的數據庫很簡單。 user_ativo具有列“ tipo_ativo_id”和“ instituicao_id”。 我有兩個地方都設置為1。我的兩個表測試排instituicoestipo_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_keylocal_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM