php - Laravel 传递关系失败
问题描述
我有一个具有以下模型和关系的应用程序:
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()
失败:
调用成员
validation()
函数null
(null
这里指的是$this->customField
类Value
方法validation()
)
当使用没有速记的“完整”关系时,它会正确返回。所以Contact::with('customFieldValues.customField.validation')->first()
有效。
同样,从 的角度来看Value
,它也可以正常工作:Value::first()->validation
.
我以前用过这种关系,是不是和多态关系有关系?我可以完成这项工作还是不可能?
解决方案
它应该适用于此:
public function validation(): BelongsTo
{
return $this->getAttribute('customField')->validation();
}
推荐阅读
- c++ - VS2019 中的 C++20 chrono 解析问题(最新)
- dax - 在 Power BI 中加入具有一个公共字段的卡车交付事务表
- php - 如何在 PHP 中将“2021 年 6 月 18 日 21:33”转换为“2021-06-18 21:33:00”?
- python - 上传 gcs 存储桶中所有必要文件时的 apache 光束触发
- java - 两个活动之间的Android Studio Firestore时间戳错误
- ios - 如何在 Expo 项目中获得适用于 iOS 的“facebookScheme”?
- css - CSS如何防止滚动条处于活动状态时显示背景
- reactjs - 处理来自 react-query 的未定义响应
- sql - 未检索 SQL Microsoft Report Builder 毫秒事件
- bash - 异步监视和中断 shell 脚本