如何使用 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