我有两个应该具有一对一关系的表。 我知道Laravel会根据字段名称自动获取关系。但是如果它有所不同,我应该说明字段名称。所以我这样做但仍然 null 作为度假胜地。有人看到我看不到的东西吗?
表格op
id
operator
departure
arrival
表格op_parameters
id
price
unit
在我的操作系统
中class Op extends Model
{
public function opParameter()
{
return $this->hasOne('App\Model\OpParameter', 'id');
}
在我的opParameter控制器
中 class OpParameter extends Model
{
//
public static $table = "op_parameters";
/*
* One to one relation
*/
public function op()
{
return $this->belongsTo('App\Model\Op', 'id');
}
}
当我尝试转储像
这样的值时dd(Op::find(1)->price);
它返回
空
可悲的是,我无法更改表名或字段。那似乎是什么问题?任何帮助都是适当的。
答案 0 :(得分:2)
我相信你需要这样的东西,我假设op表上的运算符字段是对op_parameters表上id的引用(否则我看不到你可能用来链接这两个表的内容) )。
<?php
class Op extends Model {
public function opParameter()
{
return $this->belongsTo('App\Model\OpParameter', 'id', 'operator');
}
}
<?php
class OpParameter extends Model {
protected $table = "op_parameters";
public function op()
{
return $this->hasOne('App\Model\Op', 'operator');
}
}
<?php
dd(Op::find(1)->opParameter->price);
你现在拥有的东西有几个问题。
首先,当您定义关系时,您没有指定您正在使用的自定义键。
其次,当您尝试通过您定义的关系来参考价格时,