我呆了几个小时,其中一个问题可能会有所帮助。我只是不明白缺少什么。
我正在连接一个称为User_ativo
的模型,并定义两个一对多与模型Instituicao
和Tipo_Ativo
的关系。
我的数据库很简单。表user_ativo
具有" tipo_ativo_id"one_answers" Instituicao_id"列。我有一个设置为1的测试行,我的表instituicoes
和tipo_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_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('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.
}
}