简体   繁体   English

Laravel 9 Eloquent

[英]Laravel 9 Eloquent

Hello i'm trying to use eloquent in my code:您好,我正在尝试在我的代码中使用 eloquent:

        $nr_riga = 0;
        
        foreach($data_detail as $key => $row_detail) {
            
            $nr_riga = $key + 1;

            $new_orders_details->nr_riga = $nr_riga;
            $new_orders_details->codice_articolo = $row_detail['codice_articolo'];
            $new_orders_details->quantita = $row_detail['quantita'];
            $new_orders_details->prezzo = $row_detail['prezzo'];
            $new_orders_details->order_id = $new_orders_grid->id;
            $new_orders_details->save();
            
            // DB::table('orders_detail')->insert([

            //     'order_id' => $new_orders_details->order_id,

            //     'nr_riga' => $nr_riga,

            //     'codice_articolo' => $new_orders_details->codice_articolo,
                
            //     'quantita' => $new_orders_details->quantita,
                
            //     'prezzo' => $new_orders_details->prezzo,
                
                
            //     ]);
            
        }

This loop works both ways but not equally.. when i use $new_orders_details->save();这个循环双向工作,但不是平等的......当我使用 $new_orders_details->save(); it inserts to the db a single row,seems to not looping.它向数据库插入单行,似乎没有循环。

DB::table('orders_detail')->insert does the job as i want. DB::table('orders_detail')->insert 做我想做的工作。

How to convert it to eloquent for have same result?如何将其转换为 eloquent 以获得相同的结果?

This is the db screen:这是数据库屏幕: 在此处输入图像描述

You have to create new model instance in loop.您必须在循环中创建新的 model 实例。

$new_orders_details = new OrderSDetail(); $new_orders_details = new OrderSDetail();

Since I cannot comment, can you try this solution?由于我无法发表评论,您可以尝试此解决方案吗?

$ordersDetail = new OrderSDetail();

$ordersDetail->insert([ //your data here]);

I think you can prepare date in loop and make one batch insert using Model::insert($your_data)我认为您可以在循环中准备日期并使用 Model::insert($your_data) 进行一批插入

Saving in loop it is not best way to save data to db Like:循环保存不是将数据保存到数据库的最佳方法,例如:

$data = [];

foreach($data_detail as $key => $row_detail) {
    
    $nr_riga = $key + 1;

    $data[]['nr_riga'] = $nr_riga;
    $data[]['codice_articolo'] = $row_detail['codice_articolo'];
    $data[]['quantita'] = $row_detail['quantita'];
    $data[]['prezzo'] = $row_detail['prezzo'];
    $data[]['order_id'] = $new_orders_grid->id;
}

NewOrderDetails::insert($data);

It is save all you data with using model使用 model 保存所有数据

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM