У меня есть основная таблица с именем Product со следующими столбцами:
id
product_id
product_type
name
price
in_stock
upc
Где 'id' и 'product_id' являются уникальными (id - это PK)
У меня будут другие таблицы для разных видов продуктов (типов).
Все эти другие таблицы будут иметь свойства продукта плюс
Другие свойства самостоятельно в зависимости от типа продукта
(Т.е. одежда, записи и т. Д.).
Итак, я создал модель продукта, используя полиморфные отношения
следующим образом:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
protected $fillable = [
'product_id',
'product_type',
'name',
'price',
'in_stock',
'upc'
];
public function categorizable()
{
return $this->morphTo();
}
}
И, например, модель записей:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Record extends Model
{
protected $fillable = [
'artist_id',
'title',
'label',
'code',
'format',
'number_of_discs',
'image',
'description'
];
public function products()
{
return $this->morphMany('\App\Product', 'categorizable');
}
public function artist()
{
return $this->belongsTo(Artist::class);
}
public function track()
{
return $this->hasMany(Track::class);
}
public function getItemDetails(int $itemId): array {
}
}
Принимая во внимание, что столбцы для записи:
id
artist_id
product_id
title
label
Это лучший способ связать эти таблицы.
Мои вопросы:
Есть ли лучший подход к этой конкретной проблеме?
В этом случае (используя полиморфные отношения), как мне вставить продукт?
Как я могу запросить товар, чтобы вернуть данные из
И таблица продуктов, и таблица рекордов? Я имею в виду, не необработанный запрос
Так как это я могу сделать, но как выполнить этот запрос с помощью
Красноречивым