#laravel
#laravel
Вопрос:
Я могу добавить элемент, который является ‘product_id’ при каждом импорте. Мой вопрос в том, как добавить несколько идентификаторов продукта с несколькими количествами в одну запись, а не один идентификатор?
Schema::create('imports', function (Blueprint $table) {
$table->id();
$table->bigInteger('supplier_id');
$table->bigInteger('branch_id');
$table->bigInteger('product_id');
$table->bigInteger('quantity');
$table->double('cost',null,2);
$table->timestamps();
});
Контроллер
$import = new Import();
$import->supplier_id = $request->supplier_id;
$import->branch_id = $request->branch_id;
$import->product_id = $request->product_id;
$import->quantity = $request->quantity;
$import->cost = $request->cost;
$import->save();
Комментарии:
1. Есть
$request->supplier_id;
ли и$request->quantity;
в типе массива?2. моя проблема не в том, как обработать запрос, моя проблема в том, как сохранить его в базе данных
3. Я пытаюсь разобраться в вашей проблеме. Что вы имеете в виду при добавлении нескольких идентификаторов product_id ?
4. Я хочу сохранить одну запись в базе данных, которая содержит supplier_id, branch_id, total_cost и несколько продуктов с несколькими количествами
Ответ №1:
Поскольку вы хотите добавить несколько продуктов, связанных с одним импортом, вам нужно использовать one-to-many
отношение. Вам нужно создать другую модель ImportProduct
с отношением к Import
модели следующим образом
class ImportProduct extends Model
{
...
function import()
{
return $this->belongsTo(Import::class);
}
...
}
И в вашей Import
модели вы добавите
function products()
{
return $this->hasMany(ImportProduct::class);
}
В import_products
процессе миграции вы добавите
...
$table->id();
$table->bigInteger('import_id');
$table->bigInteger('product_id');
$table->bigInteger('quantity');
...
Вы удалите product_id
и quantity
из imports
миграции.
Теперь в вашем контроллере вы можете добавить один импорт с несколькими продуктами, используя products()
отношение из Import
модели.
$import = new Import();
$import->supplier_id = $request->supplier_id;
$import->branch_id = $request->branch_id;
$import->cost = $request->cost;
$import->save();
// $import->products()->associate($products);
//foreach ($products as $product) {
// $import_product = new ImportProduct();
// $import_product->import_id = $import->id;
// $import_product->product_id = $product->id;
// $import_product->quantity = $product->quantity;
// $import_product->save();
//}