如何使用 laravel 集合获取最后插入的 ID 并将其插入到第二个表中?

Posted

技术标签:

【中文标题】如何使用 laravel 集合获取最后插入的 ID 并将其插入到第二个表中?【英文标题】:How to get the last inserted ID and insert it to the second table using the laravel collection? 【发布时间】:2021-11-07 21:45:54 【问题描述】:

这是我第一次遇到这个问题,老实说我不知道​​这叫什么。我有一个模块,我需要在第一个表中插入所有数据,然后插入到第一个表中的每个 id 我都想获取它,然后将其插入到第二个表中。将 id 插入第二个表的目的是为了表的关系。现在我使用 laravel 作为后端,并使用 transform 方法插入每个数据。

现在这里的主要问题是如何将每个最后插入的 Id 插入到第一个表中并将其插入到第二个表中。

这是我插入第一个表的数据:

$collection = $rows->transform(function($item) use ($start,$cash_amount, $bank_deposit_amount, $off_set_amount, $grand_total) 
        
        unset($item["key"]);
        
        $item["checkDate"] = ($item["checkDate"] != '') ? $item["checkDate"] : null;
        $item['encoded_by'] = ($item['customer'] != '') ? Auth::user()->name : '';
        $item['receive_date'] = ($item['customer'] != '') ? $start : null;
        $item['status'] = ($item['customer'] != '') ? "exchange_check" : '';
        $item['amount'] = ($item['amount'] != '') ? floatval(preg_replace('/[^\d.]/', '', $item['amount'])) : '';
        $item["original_date"] = $item["checkDate"];
        $item['cash'] = $cash_amount;
        $item['bank_deposit'] = $bank_deposit_amount;
        $item['offset'] = $off_set_amount;
        $item['grand_total'] = $grand_total;

        return $item;
    );
    
    ExchangeCheck::insert($collection->toArray());

对于第二个表,我使用此模型使用 App\ExchangeList;,此模型用于插入 ExchangeCheck 模型中的所有 ID:

我可以将 ExchangeCheck 的每个 ID 插入到 ExchangeList 中吗?

谢谢。

【问题讨论】:

这些模型之间是什么类型的关系?还有App\ExchangeList的字段是什么? 如果您希望绑定这些语句(一起通过或一起失败),您可能还想使用事务。 【参考方案1】:

将数据插入表时,使用insertGetId 代替insert,并将结果注入变量以检索id

试试类似的东西:

$lastIDinserted = ExchangeCheck::insertGetId($collection->toArray());

否则你可以使用这个方法:

$lastIDinserted2 = ExchangeCheck::select('id')->orderByDesc('id')->first();
// OR
$lastIDinserted2 = ExchangeCheck::latest('id')->first();

要检索您的id,请执行以下操作:

$lastIDinserted2 = $lastIDinserted2->id;

希望对你有所帮助!

【讨论】:

以上是关于如何使用 laravel 集合获取最后插入的 ID 并将其插入到第二个表中?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 laravel 中的 save() 方法获取最后插入的 id

如何获取最后插入的自动递增 id 并将其插入 laravel 中的另一个表中?

laravel 8:插入方法在 eloquent 中获取最后一个插入 id(插入方法)

使用 Laravel Eloquent 获取最后插入的 ID

如何使用 Eloquent::insert() 获取最后插入的 id

Laravel 4 - 从表中获取最后一个 id