2017-02-23 133 views
0

當在Laravel使用口才註冊時,我在桌面用戶的PK字段是userid [自動增量]當我運行User::create();到不同字段(create_by [ INT]),所以create_by領域將充滿相同的值作爲主鍵字段的用戶ID,這樣的代碼:Laravel 5.4當前id插入雄辯

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保存到create_by場在同一時間user_id已插入,而不是數據保存後。

+0

這裏你想獲得創建該窗體的用戶的ID或簡單的ID作爲主鍵ID? –

+0

我想要獲得的主鍵ID在同一時間輸入到字段create_by,但不是數據保存後,我想同時輸入它們在一起 –

+0

我回答了嘗試它希望它會爲你工作 –

回答

0

可能是它不是一個好辦法,但它會正常工作試試吧

我假設數據庫字段根據需要請查看查詢。它是一種提示工作

1日需要得到用戶的最大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, 
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 
]); 
+0

thx的答案,但我想獲得主鍵ID在同一時間插入到字段create_by,但不是在數據保存後,我想同時輸入它們在一起 –

+0

你必須知道您使用的是自動增量id,這意味着它在數據創建之前確實存在。它直接在SQL中自動增加,這就是爲什麼只有在插入後纔可用。之前沒有。如果你以前想要,你必須手動'id',而不是自動增量。 – EddyTheDove

+0

檢查我的更新以獲取最新用戶。這不是100%安全。 – EddyTheDove

0

你可以做到這一點:

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