2017-02-23 7 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を返すために良かったが、私の期待は、私が同じでcreate_byフィールドに現在のIDを保存したいですデータが保存された後ではなく、時刻user_idが挿入されました。

+0

ここで、そのフォームを作成するユーザーのIDを取得したい場合や、単純にIDを主キーIDとして取得したい場合は、 –

+0

データを保存した後ではなく、同時にプライマリキーIDをフィールドcreate_byに入力したいのですが、同時に入力したいと思っています –

+0

私はそれがあなたのためにうまくいくと試してみました –

答えて

0

はない良い方法かもしれないが、それは大丈夫、私は必要に応じてクエリを確認してくださいデシベルフィールドを想定しています

にそれを試してみてください動作します。あなたがコメントしたコードを削除した場合、それは今あなたができる

'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が、私は同じ時間で一緒に入力したいデータが保存された後ではなく、create_byフィールドに挿入すると同時にプライマリキーのIDを取得したい –

+0

あなたは認識する必要がありますオートインクリメントIDを使用しているということは、データが作成される前に存在することを意味します。それはSQLで直接的に自動インクリメントされるため、挿入した後にのみ利用可能です。これまでにない。これを前にしたいのであれば、自動インクリメントではなく、手動で 'id'を実行する必要があります。 – EddyTheDove

+0

更新をチェックして、最新のユーザーを取得してください。これは100%安全ではありません。 – EddyTheDove

0

として、この変数を渡すあなたの次のIDを与える

$users = User::whereRaw('id = (select max(`userid`) from users)')->first(); 
     $create_by= $users->id+1; 
     //dd($create_by); 
     //die; 

ように、ユーザーの最大IDを取得する

第一の必要性を動作するように、そのヒント

$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(); 
関連する問題