我有两个表应该具有一对一的关系。我知道Laravel会根据字段名称自动获取关系。但是,如果字段名称不同,我应该说明一下。因此,我这样做了,但仍然无法使用null。有人看到我看不到的东西吗?
表操作
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);
它返回
空值
可悲的是,我无法更改表名称或字段。那么,似乎是什么问题呢?任何帮助都可以申请。
我相信您需要这样的东西,我假设op表上的operator字段是对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);
您目前所拥有的有几个问题。
首先,在定义关系时,您没有指定正在使用的自定义键。
其次,当您尝试参考价格时,您并不会通过已定义的关系进行交易。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句