当使用eloquent在Laravel注册时,表用户的PK字段是userid [auto increment]我想在User::create();
运行到不同字段create_by
的同时插入当前id } [int])所以create_by字段将填充与主键字段userid相同的值,如下代码所示:
User::Create([
'user_email' => $data['user_email'],
'user_password' => bcrypt($data['user_password']),
'first_name' => 'John',
'last_name' => 'Doe',
'department_id' => 1,
'user_level' => 1,
'create_date' => Carbon::now('Asia/Jakarta'),
'create_by' => // value same as userid the PK
])
如何获取当前id在不同的字段中使用?
我实际上尝试了一些技巧来获得这样的id:
User::insertGetId([
'user_email' => $data['user_email'],
'user_password' => bcrypt($data['user_password']),
'first_name' => 'John',
'last_name' => 'Doe',
'department_id' => 1,
'user_level' => 1,
'create_date' => Carbon::now('Asia/Jakarta')
])
返回插入的ID很好,但我的期望是我想在插入create_by
的同时将当前ID保存到user_id
字段,而不是在保存数据之后。
答案 0 :(得分:2)
你可以尝试
$user = User::create([...]);
$user->create_by = $user->id;
$user->update();
<强>更新强> 您可以获取数据库中的最后一个用户。但请注意,这不是100%安全。
$lastUser = User::orderBy('id', 'desc')->first();
$user = User::create([
...
'create_by' => $lastUser->id + 1
]);
答案 1 :(得分:0)
可能它不是一个好方法,但它会正常工作尝试
我假设数据库字段请根据需要查看查询。这是一个工作的暗示
第一个需要获得用户的最大ID
$users = User::whereRaw('id = (select max(`userid`) from users)')->first();
$create_by= $users->id+1;
//dd($create_by);
//die;
如果您删除已注释的代码,它将为您提供下一个ID,现在将此变量作为
传递'create_by' => $create_by,
答案 2 :(得分:0)
您可以通过以下方式完成:
for(int i = 0 ; i<products.size();i++)
{
totalprice = totalprice+Integer.parseInt(products.get(i).getProductPrice());
totalquantity = totalquantity+Integer.parseInt(products.get(i).getProductQuantity());
totalbill = totalbill+Integer.parseInt(products.get(i).getProductPrice() * products.get(i).getProductQuantity());
}