我想在模型的关联方法中访问表数据。但是,当我运行if语句来检查类型是否为'item'时,它将返回:
在null上调用成员函数addEagerConstraints()
因此无法识别$this->type
。该如何实现?
我尝试使用$this->type
来查看是否可以通过这种方式检查类型,但是没有运气。
class PurchasableItem extends Model
{
protected $fillable = ['type', 'value', 'amount'];
function item_data() {
if($this->type == 'item')
return $this->hasOne('App\ItemTemplate', 'id', 'value');
}
}
因此,我只希望可购买商品的类型为'item'时才返回此关系,但是当我尝试运行此商品时,会出现以下错误:
在null上调用成员函数addEagerConstraints()
答案 0 :(得分:0)
我找到了一种解决方法,可以通过另一种方式实现我想要的目的。
我已使用
将“数据”作为属性添加到模型中 protected $appends = ['data'];
然后我将字段更改为包含正确的关系:
public function getDataAttribute()
{
if($this->attributes['type'] == 'item') {
return ItemTemplate::find($this->attributes['value']);
} else {
return License::find($this->attributes['value']);
}
}