laravel 7.x один ко многим

#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 выше?