php - 如何在 Laravel 中获取当前保存模型的 id
问题描述
在模型的 store() 方法上,我想再保存两个模型。我需要我正在存储的当前模型的 id。我怎么能得到那个?
控制器
public function store(Request $request, Property $property)
{
/*******************************************************
* Validation sent data
* Validate e forme ersali user
*******************************************************/
$data = $request->validate([
'type' => 'required',
'title' => 'required',
'description' => 'required',
'base_capacity' => 'required',
'max_occupancy' => 'required',
]);
Property::create($data);
PropertyDetail::create([
'property_id' => 1,
'state' => $request->state,
'city' => $request->city,
'address' => $request->address,
'post_code' => $request->post_code,
'placearea' => $request->place_area,
'telephone' => $request->telephone,
]);
}
在这里,我在属性详细信息中对属性 ID 进行了硬编码。但是,我想获取我刚刚在其之上创建的当前属性的 id。
解决方案
好的方法
- 创建一个实例
Property
$property = Property::create($data);
- 参考它
PropertyDetail::create([
'property_id' => $property->id, // here it is
'state' =>$request->state,
'city' =>$request->city,
'address' =>$request->address,
'post_code' =>$request->post_code,
'placearea' =>$request->place_area,
'telephone' =>$request->telephone,
]);
更安全的方法
更安全的方法几乎相同,除了您使用两个查询并且查询可能会失败。您要确保要么都成功,要么都不成功。为此,我们使用事务。
我们要确保安全的是确保数据进入数据库。
public function store(Request $request,Property $property)
{
/*******************************************************
* Validation sent data
* Validate e forme ersali user
*******************************************************/
$data = $request->validate([
'type' => 'required',
'title' => 'required',
'description' => 'required',
'base_capacity' => 'required',
'max_occupancy' => 'required',
]);
\DB::transaction(function() use ($data, $request) {
$property = Property::create($data);
PropertyDetail::create([
'property_id' => $property->id,
'state' =>$request->state,
'city' =>$request->city,
'address' =>$request->address,
'post_code' =>$request->post_code,
'placearea' =>$request->place_area,
'telephone' =>$request->telephone,
]);
});
}
推荐阅读
- ethereum - 尝试使用 Web3 订阅 ETH 上的特定事件,但不确定如何检索返回的数据并使用它
- javascript - window.find 在网页上的 iframe 中不起作用
- python - 检查条件,添加到空数组
- python - 如何从 BeautifulSoup4 收到的 html 列表中获取文本
- python - 根据日期将json文件拆分为多个csv文件?
- react-native - global.__reanimatedWorkletInit 不是函数。反应原生动画 v2
- postman - 修复 get_entry_list 方法中的查询 Sugarcrm Postman
- r - 如何在R中将CHAR长度从8更改为2
- c# - 套接字转换为中止状态
- gradle - 如何从 gradle 任务中调用 exe