雄辩的一对一关系不起作用



我呆了几个小时,其中一个问题可能会有所帮助。我只是不明白缺少什么。

我正在连接一个称为User_ativo的模型,并定义两个一对多与模型InstituicaoTipo_Ativo的关系。

我的数据库很简单。表user_ativo具有" tipo_ativo_id"one_answers" Instituicao_id"列。我有一个设置为1的测试行,我的表instituicoestipo_ativos都只有" ID"和一个字符串字段" nome"(名称)。两者都有ID ==1。

的记录

user_ativo.php:

<?php
  namespace App;
  use IlluminateDatabaseEloquentModel;
  class User_ativo extends Model
  {
    public function tipo(){
        return $this->belongsTo('AppTipo_ativo');
    }
    public function instituicao(){
        return $this->belongsTo('AppInstituicao');
    }
  }

Instituicao.php

namespace App;
use IlluminateDatabaseEloquentModel;
class Instituicao extends Model
{
    protected $table = 'instituicoes';
    public function user_ativos(){
        return $this->hasMany('AppUser_ativo');
    }
}

tipo_ativo.php

<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Tipo_ativo extends Model
{
    protected $table = 'tipo_ativos';
    public function user_ativos(){
        return $this->hasMany('AppUser_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('AppTipo_ativo','user_ativo_id'); //second parameter is foreign_key_of_User_avito_table_here
    }
    public function instituicao(){
        return $this->belongsTo('AppInstituicao','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('AppUser_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('AppUser_ativo','tipo_ativo_id'); //second parameter is foreign key of Tipo_ativo model.
    }
}

最新更新