Я пытаюсь отобразить несколько изображений для одного продукта.
Я попытался создать обычные отношения hasMany / ownTo, но мой запрос дублирует продукты для каждого изображения, которое ему принадлежит. Поэтому я решил использовать полиморфное отношение morphOne. Я прочитал кучу вопросов / ответов здесь и в целом по Google и не смог найти свой ответ, или, может быть, я просто не понял, как все работает.
Следуя документации Laravels, у меня есть следующее:
Product model
public function images()
{
return $this->morphOne(Image::class, 'imageable');
}
Image model
protected $fillable = [
'image', 'imageable_id', 'imageable_type'
];
public function imageable()
{
return $this->morphTo();
}
Image migration
Schema::create('images', function (Blueprint $table) {
$table->increments('id');
$table->string('image')->nullable();
$table->integer('imageable_id')->unsigned();
$table->string('imageable_type');
$table->timestamps();
});
Database image
https://ibb.co/bd8VsCK
Image Factory
$noteable = App\Image::class;
return [
'image' =>$faker>image(storage_path('app/public/products'),400,300,'',false),
'imageable_type' => $noteable,
'imageable_id' => $faker->numberBetween(1,20),
];
Может быть, я что-то упустил, или, возможно, этот подход не подходит для того, что я хочу. Я довольно новичок в Laravel, поэтому любая помощь будет отличной. Спасибо!