Laravel 5.4当前id插入雄辩

时间:2017-02-23 04:44:25

标签: php laravel eloquent

当使用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字段,而不是在保存数据之后。

3 个答案:

答案 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());
}