【发布时间】:2021-06-19 18:34:36
【问题描述】:
我必须为Photo 和SizeVariant 建模。一张照片有许多尺寸变体,一个尺寸变体只有一张照片作为它的所有者。 DB 的表遵循 Eloquents 命名方案,分别称为 photos 和 size_variants。
我的模型看起来像这样(缩短):
class Photo extends Model {
protected $with = [ 'size_variants' ];
public function sizeVariants(): HasMany {
return $this->hasMany(SizeVariant::class);
}
}
class SizeVariant extends Model {
protected $with = ['photo'];
protected $touches = ['photo'];
public function photo(): BelongsTo {
return $this->belongsTo(Photo::class);
}
}
但是,当我尝试在现有的 $photo 对象上调用 $photo->load('size_variants) 时,我收到带有消息 Call to undefined relationship [size_variants] on model [App\Models\Photo] 的 Illuminate\Database\Eloquent\RelationNotFoundException 异常。
这种关系的正确名称是什么?我认为命名方案将遵循 Laravel 通常的模式,而 Laravel 神奇地映射了蛇和骆驼的情况。
我已经尝试过大写、蛇形和驼峰式以及复数与单数的所有组合,即$photo->load('size_variants')、$photo->load('size_variant')、$photo->load('sizeVariants')、$photo->load('sizeVariant')、$photo->load('SizeVariants') 和$photo->load('SizeVariant')。
【问题讨论】:
标签: eloquent orm eager-loading relation