私は現在テーブルにデータを挿入するために以下のコードを使用しています:
<?php
public function saveDetailsCompany()
{
$post = Input::All();
$data = new Company;
$data->nombre = $post['name'];
$data->direccion = $post['address'];
$data->telefono = $post['phone'];
$data->email = $post['email'];
$data->giro = $post['type'];
$data->fecha_registro = date("Y-m-d H:i:s");
$data->fecha_modificacion = date("Y-m-d H:i:s");
if ($data->save()) {
return Response::json(array('success' => true), 200);
}
}
最後に挿入されたIDを返したいのですが、取得方法がわかりません。
敬具!
save
の後、$data->id
が最後に挿入されたIDになります。
return Response::json(array('success' => true, 'last_insert_id' => $data->id), 200);
更新されたlaravelバージョンのためにこれを試してください
return response()->json(array('success' => true, 'last_insert_id' => $data->id), 200);
xdazz はこの場合は正しいですが、DB::statement
またはDB::insert
を使用している可能性のある将来の訪問者のために、別の方法があります。
DB::getPdo()->lastInsertId();
Jeffrey Wayが彼のLaracasts 5チュートリアルでModel::create()
をどのように使っているかを好む人のために、コントローラの各フィールドを明示的に設定せずに大量の割り当てにモデルの$fillable
を使うことなく、Requestを直接データベースに送ります。私はinsertGetId()
を使っている人をたくさん読んでいますが、残念ながらこれは$fillable
ホワイトリストを尊重していないので、_tokenやデータベースのフィールド以外のものを挿入しようとするとエラーが発生してしまいますマスアサインメントを使用し、可能な限り全体的に少ないコードを記述したいので、これは私を困惑させました。幸いなことにEloquentの create
メソッド はsaveメソッドをラップしているだけなので(@xdazzが上記で引用したもの)、最後に作成したIDを引き出すことができます...
public function store() {
$input = Request::all();
$id = Company::create($input)->id;
return redirect('company/'.$id);
}
テーブルに自動インクリメントIDがある場合は、insertGetIdメソッドを使用してレコードを挿入してからIDを取得します。
$id = DB::table('users')->insertGetId([
'email' => '[email protected]',
'votes' => 0
]);
**** Laravel ****
最初にオブジェクトを作成し、それからそのオブジェクトの属性値を設定し、そしてオブジェクトレコードを保存し、そして最後に挿入されたIDを取得します。といった
$user = new User();
$user->name = 'John';
$user->save();
//今すぐ最後に挿入されたID
$insertedId = $user->id;
echo $insertedId ;
笑5:これを行うことができます:
use App\Http\Requests\UserStoreRequest;
class UserController extends Controller {
private $user;
public function __construct( User $user )
{
$this->user = $user;
}
public function store( UserStoreRequest $request )
{
$user= $this->user->create([
'name' => $request['name'],
'email' => $request['email'],
'password' => Hash::make($request['password'])
]);
$lastInsertedId= $user->id;
}
}
これはlaravel 4.2で私のために働きました
$id = User::insertGetId([
'username' => Input::get('username'),
'password' => Hash::make('password'),
'active' => 0
]);
これが例です:
public static function saveTutorial(){
$data = Input::all();
$Tut = new Tutorial;
$Tut->title = $data['title'];
$Tut->tutorial = $data['tutorial'];
$Tut->save();
$LastInsertId = $Tut->id;
return Response::json(array('success' => true,'last_id'=>$LastInsertId), 200);
}
Laravel 4に最後に挿入されたIDを取得する方法は次のとおりです -
public function store()
{
$input = Input::all();
$validation = Validator::make($input, user::$rules);
if ($validation->passes())
{
$user= $this->user->create(array(
'name' => Input::get('name'),
'email' => Input::get('email'),
'password' => Hash::make(Input::get('password')),
));
$lastInsertedId= $user->id; //get last inserted record's user id value
$userId= array('user_id'=>$lastInsertedId); //put this value equal to datatable column name where it will be saved
$user->update($userId); //update newly created record by storing the value of last inserted id
return Redirect::route('users.index');
}
return Redirect::route('users.create')->withInput()->withErrors($validation)->with('message', 'There were validation errors.');
}
insertGetId
を使用して、同時にid
を挿入および挿入します
doc から
テーブルに自動インクリメントIDがある場合は、insertGetIdメソッドを使用してレコードを挿入してからIDを取得します。
によってModel
$id = Model::insertGetId(["name"=>"Niklesh","email"=>"[email protected]"]);
によってDB
$id = DB::table('users')->insertGetId(["name"=>"Niklesh","email"=>"[email protected]"]);
詳細については、 https://laravel.com/docs/5.5/queries#inserts を参照してください。
モデルを保存した後、初期化されたインスタンスは次のIDを持ちます。
$report = new Report();
$report->user_id = $request->user_id;
$report->patient_id = $request->patient_id;
$report->diseases_id = $request->modality;
$isReportCreated = $report->save();
return $report->id; // this will return the saved report id
後に
$data->save()
$data->id
はあなたに挿入されたIDを与えるでしょう、
注: - 自動インクリメント列の名前が sno の場合、$data->sno
ではなく$data->id
を使用してください。
Laravelの場合、新しいレコードを挿入して$data->save()
を呼び出すと、この関数はINSERTクエリを実行し、主キーの値(デフォルトでは id )を返します。
以下のコードを使用することができます。
if($data->save()) {
return Response::json(array('status' => 1, 'primary_id'=>$data->id), 200);
}
Laravel 5.2では、できるだけきれいにします。
public function saveContact(Request $request, Contact $contact)
{
$create = $contact->create($request->all());
return response()->json($create->id, 201);
}
$objPost = new Post;
$objPost->title = 'Title';
$objPost->description = 'Description';
$objPost->save();
$recId = $objPost->id; // If Id in table column name if other then id then user the other column name
return Response::json(['success' => true,'id' => $recId], 200);
Insert()の場合
Example:
$ data1 =配列( 'company_id' => $ company_id、 'branch_id' => $ branch_id);
$insert_id = CreditVoucher::insert($data1);
$id = DB::getPdo()->lastInsertId();
dd($id);
Saving データベースのレコードを保存した後、$data->id
によって id にアクセスできます。
return Response::json(['success' => true, 'last_insert_id' => $data->id], 200)
あなたはこれを行うことができます:
$result=app('db')->insert("INSERT INTO table...");
$lastInsertId=app('db')->getPdo()->lastInsertId();
この質問は少し古いですが。私の迅速で汚い解決策は次のようになります。
$last_entry = Model::latest()->first();
しかし、非常に頻繁に使用されるデータベースの競合状態に対して脆弱だと思います。
最短の方法は、おそらくモデル上で refresh()
を呼び出すことです。
public function create(array $data): MyModel
{
$myModel = new MyModel($dataArray);
$myModel->saveOrFail();
return $myModel->refresh();
}
データベースに最後に挿入されたIDを取得するには
$data = new YourModelName;
$data->name = 'Some Value';
$data->email = '[email protected]';
$data->save();
$lastInsertedId = $data->id;
ここで$ lastInsertedIdはあなたに最後に挿入された自動インクリメントIDを与えます。
$data->save()
を保存した後。すべてのデータは$data
内にプッシュされます。これはオブジェクトであり、現在の行は最近$data
内に保存されたばかりです。最後のinsertId
は$data->id
の中にあります。
応答コードは次のようになります。
return Response::json(array('success' => true, 'last_insert_id' => $data->id), 200);
オプションの方法は次のとおりです。
$lastID = DB::table('EXAMPLE-TABLE')
->orderBy('id', 'desc')
->first();
$lastId = $lastProduct->id;
Saveメソッドを呼び出す同じオブジェクトで最後に挿入されたIDを取得できます。
$data->save();
$inserted_id = $data->id;
だからあなたは簡単に書くことができます:
if ($data->save()) {
return Response::json(array('success' => true,'inserted_id'=>$data->id), 200);
}
雄弁モデルの使用
$user = new Report();
$user->email= '[email protected]';
$user->save();
$lastId = $user->id;
クエリービルダーの使用
$lastId = DB::table('reports')->insertGetId(['email' => '[email protected]']);