#laravel #one-to-many
Вопрос:
У меня в моем проекте laravel 7.x вопрос красноречивый один ко многим отношениям, моя модель саллат :
public function sallproducts()
{
return $this->hasMany(sallat_product::class);
}
а модель sallat_products-это:
public function sallats()
{
return $this->belongsTo(sallat::class);
}
и мой метод ввода в контроллере таков:
$sallats = new sallat();
$sallats->full_total = $request->full_total;
$sallats->save();
$sall = new sallat_product();
$sall->name_product = $request->name_product;
$sall->total = $request->total;
$sall->quantity = $request->quantity;
$sall->price = $request->price;
$sall->sale = $request->sale;
$sallats->sallproducts()->save($sall);
return "done";
или я могу сделать это:
$sallats->sallproducts()->save($sall);
return "done";
затем я попытался протестировать почтовый запрос на почтальоне
{
"full_total":87997,
"arr":
[
{
"name_product":"سيتامول",
"quantity":222,
"total":299,
"price":100,
"sale":"10 2"
}
]
}
Я хочу вставить несколько записей в один запрос таким образом, как описано выше, и у меня есть эта ошибка на почтальоне :
Кодом sqlstate[42S22]: столбец не найден: 1054 неизвестный столбец ‘sallat_id’ в ‘списке полей’ (SQL следующим образом: вставить в
sallat_products
(name_product
,total
,quantity
,price
,sale
,sallat_id
,updated_at
,created_at
) значения (?, ?, ?, ?, ?, 18, 2021-07-11 02:51:59, 2021-07-11 02:51:59))
это миграция продуктов sallat_products :
$table->id();
$table->bigInteger('id_sallat')->unsigned();
$table->foreign('id_sallat')->references('id')->on('sallats');
$table->string('name_product');
$table->integer('total');
$table->integer('quantity');
$table->integer('price');
$table->string('sale');
$table->timestamps();
и миграция саллатов:
$table->id();
$table->integer('full_total');
$table->timestamps();
итак, что мне делать
, может ли кто-нибудь помочь мне, пожалуйста, решить эту проблему.
Ответ №1:
В вашей sallat_products
миграции это должно быть:
$table->bigInteger('sallat_id')->unsigned();
$table->foreign('sallat_id')->references('id')->on('sallats');
вместо id_sallat
того, чтобы соответствовать соглашениям Ларавеля.
Кроме того, вы можете указать имя этого столбца в качестве второго аргумента для hasMany
и belongsTo
в ваших отношениях.
Комментарии:
1. хорошо, что я должен сделать, чтобы вставить несколько записей в один запрос, как в json выше?