我目前正在使用以下代码在表中插入数据:
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,但我不知道如何获取它.
亲切的问候!
这在laravel 4.2中对我有用
$id = User::insertGetId([ 'username' => Input::get('username'), 'password' => Hash::make('password'), 'active' => 0 ]);
如果表具有自动递增ID,请使用insertGetId方法插入记录,然后检索ID:
$id = DB::table('users')->insertGetId([ 'email' => 'john@example.com', 'votes' => 0 ]);
请参阅:https://laravel.com/docs/5.1/queries#inserts
这是一个例子:
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); }
对于那些也喜欢Jeffrey Way Model::create()
在他的Laracasts 5教程中使用的人,他只需将Request直接发送到数据库而无需在控制器中明确设置每个字段,并使用模型$fillable
进行质量分配(对于任何新的和使用的人来说非常重要)这种方式):我读了很多人使用insertGetId()
但不幸的是,这不尊重$fillable
白名单,所以你会在尝试插入_token和任何不是数据库中的字段时出错,最终设置你想要的东西这让我感到很失望,因为我想尽可能使用质量分配和整体编写更少的代码.幸运的是,Eloquent的create
方法只包含了save方法(上面引用的@xdazz),所以你仍然可以提取最后创建的ID ...
public function store() {
$input = Request::all();
$id = Company::create($input)->id;
return redirect('company/'.$id);
}
****对于Laravel****
首先创建一个对象,然后为该对象设置属性值,然后保存对象记录,然后获取最后插入的id.如
$user = new User(); $user->name = 'John'; $user->save();
//现在获取最后插入的ID
$insertedId = $user->id; echo $insertedId ;
使用insertGetId
插入和获得插入id
在同一时间
来自doc
如果表具有自动递增ID,请使用insertGetId方法插入记录,然后检索ID:
通过 Model
$id = Model::insertGetId(["name"=>"Niklesh","email"=>"myemail@gmail.com"]);
通过 DB
$id = DB::table('users')->insertGetId(["name"=>"Niklesh","email"=>"myemail@gmail.com"]);
有关更多详细信息,请访问:https://laravel.com/docs/5.5/queries#inserts
以下是我们如何在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.'); }
保存模型后,初始化的实例具有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
在laravel 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; } }
xdazz就在这种情况下,但对于谁可能使用未来游客的利益DB::statement
或者DB::insert
,还有另一种方式:
DB::getPdo()->lastInsertId();
之后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);