访问模型内​​的值

时间:2018-12-22 13:39:45

标签: php laravel laravel-5 eloquent

我想在模型的关联方法中访问表数据。但是,当我运行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()

1 个答案:

答案 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']);
        }
    }