Имя модели полиморфных отношений Laravel сохраняется вместо типа
Я использую полиморфные отношения «один к одному», чтобы иметь несколько типов продуктов с общими полями, чтобы оптимизировать структуру базы данных. У меня есть родительская модель Product и модель обуви.
Проблема в том, что каждый раз, когда я сохраняю продукт (и обувь, и продукт), и возникает взаимосвязь (productable_id сохраняется правильно) в
productable_type
вместо того, чтобы видеть
App\Models\Shoe
я понимаю
App\Models\Product
и я не знаю, откуда это.
Вот методы отношений:
В Product.php
public function productable() {
return $this->morphTo();
}
В Shoe.php
public function product() {
return $this->morphOne('App\Models\Product', 'productable');
}
миграция таблицы товаров:
$table->id();
$table->foreignId('product_model_id')->constrained('product_models');
$table->foreignId('owner_id')->nullable()->constrained('users')->onUpdate('cascade'); // fields for the model and the product's owner
$table->integer('productable_id');
$table->string('productable_type');
1 ответ
Сначала создайте Shoe -
$shoe = new Shoe();
// after assign value
$shoe->save();
// then create Product
$shoe->product()->create($yourProductData);