【问题标题】:Laravel transitive relation failsLaravel 传递关系失败
【发布时间】:2020-10-21 08:26:05
【问题描述】:

我有一个具有以下模型和关系的应用:

Contact 变形许多 Values

public function customFieldValues()
{
    return $this->morphMany(Value::class, 'model');
}

Value 属于CustomField

public function customField(): BelongsTo
{
    return $this->belongsTo(CustomField::class);
}

CustomField 属于Validation

public function validation(): BelongsTo
{
    return $this->belongsTo(Validation::class);
}

我想为值验证添加一个简写,所以我在Value 类中添加了以下内容:

public function validation(): BelongsTo
{
    return $this->customField->validation();
}

我遇到的问题是,当我尝试在 Contact 模型上通过验证急切加载值时。

执行Contact::with('customFieldValues.validation')->first() 失败:

null 上调用成员函数validation()

(这里的null指的是Valuevalidation()方法中的$this->customField

当使用不带速记的“完整”关系时,它会正确返回。所以Contact::with('customFieldValues.customField.validation')->first() 有效。

Value 的角度来看,它也可以正常工作:Value::first()->validation

我以前用过这种关系,是不是和多态关系有关?我可以完成这项工作还是不可能?

【问题讨论】:

    标签: php laravel eloquent polymorphism


    【解决方案1】:

    它应该适用于这个:

    public function validation(): BelongsTo
    {
        return $this->getAttribute('customField')->validation();
    }
    

    【讨论】:

      猜你喜欢
      • 2018-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-08
      • 2020-06-18
      • 1970-01-01
      • 2014-12-26
      相关资源
      最近更新 更多