Php Laravel 5.4当前id插入雄辩

Php Laravel 5.4当前id插入雄辩,php,laravel,eloquent,Php,Laravel,Eloquent,当使用eloquent在Laravel注册时,表users中我的PK字段是userid[auto increment],我想在运行User::create()的同时插入当前id到不同的字段(create_by[int]),因此create_by字段将填充与主键字段userid相同的值,如下代码: User::Create([ 'user_email' => $data['user_email'], 'user_password' => bcrypt($data['us

当使用eloquent在Laravel注册时,表users中我的PK字段是userid[auto increment],我想在运行
User::create()的同时插入当前id
到不同的字段(
create_by
[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很好,但我希望在插入
用户id
的同时将当前id保存到
create\u by
字段,而不是在保存数据之后。

您可以尝试

$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
]);
你可以试试

$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
]);

也许这不是一个好方法,但它会很好的尝试它

我假设db字段请根据需要查看查询。这是工作的暗示

首先需要获取用户的最大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,

也许这不是一个好方法,但它会很好的尝试它

我假设db字段请根据需要查看查询。这是工作的暗示

首先需要获取用户的最大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,
您可以通过以下方式完成:

$user_save_obj = 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')
])

$last_inserted_id = $user_save_obj->id;

$user_update_obj = User::find($last_inserted_id);
$user_update_obj->created_by = $last_inserted_id;
$user_update_obj->save();
您可以通过以下方式完成:

$user_save_obj = 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')
])

$last_inserted_id = $user_save_obj->id;

$user_update_obj = User::find($last_inserted_id);
$user_update_obj->created_by = $last_inserted_id;
$user_update_obj->save();

在这里,您想获取创建该表单的用户的id,或者只是将该id作为主键id?我想在输入到字段create_by的同时获取主键id,但不是在保存数据之后,我想同时输入它们我回答了try it希望它对你有用这里你想获取创建表单的用户的id或者简单地将id作为主键id?我想同时获取主键id输入到字段create_by,但不是在保存数据之后,我想同时输入它们我回答了try it希望它对youthx的答案有效,但我想同时获得主键id以插入到字段create_by,但不是在保存数据后,我想同时输入它们您必须知道您使用的是autoincrement id,这意味着在创建数据之前它确实存在。它直接在SQL中自动递增,这就是为什么它只有在插入后才可用。以前没有。如果您想在之前使用它,您必须执行手动
id
,而不是使用自动增量。请检查我的更新以获取最新用户。这不是100%SAFE.thx的答案,但我希望同时获得主键id,以插入到字段create_by中,但不是在保存数据后,我希望同时将它们一起输入。您必须注意,您使用的是自动增量id,这意味着在创建数据之前它确实存在。它直接在SQL中自动递增,这就是为什么它只有在插入后才可用。以前没有。如果您想在之前使用它,您必须执行手动
id
,而不是使用自动增量。请检查我的更新以获取最新用户。这不是100%安全的。