使用Laravel Eloquent获取最后插入的ID

 chenyanni1030_430 发布于 2023-02-03 12:37

我目前正在使用以下代码在表中插入数据:

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,但我不知道如何获取它.

亲切的问候!

11 个回答
  • 这在laravel 4.2中对我有用

    $id = User::insertGetId([
        'username' => Input::get('username'),
        'password' => Hash::make('password'),
        'active'   => 0
    ]);
    

    2023-02-03 12:38 回答
  • 如果表具有自动递增ID,请使用insertGetId方法插入记录,然后检索ID:

    $id = DB::table('users')->insertGetId([
        'email' => 'john@example.com',
        'votes' => 0
    ]);
    

    请参阅:https://laravel.com/docs/5.1/queries#inserts

    2023-02-03 12:38 回答
  • 这是一个例子:

    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);
    }
    

    2023-02-03 12:38 回答
  • 对于那些也喜欢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);
    }
    

    2023-02-03 12:38 回答
  • ****对于Laravel****

    首先创建一个对象,然后为该对象设置属性值,然后保存对象记录,然后获取最后插入的id.如

    $user = new User();        
    
    $user->name = 'John';  
    
    $user->save();
    

    //现在获取最后插入的ID

    $insertedId = $user->id;
    
    echo $insertedId ;
    

    2023-02-03 12:38 回答
  • 使用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

    2023-02-03 12:38 回答
  • 以下是我们如何在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.');
        }
    

    2023-02-03 12:38 回答
  • 保存模型后,初始化的实例具有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
    

    2023-02-03 12:38 回答
  • 在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;
        }
    }
    

    2023-02-03 12:38 回答
  • xdazz就在这种情况下,但对于谁可能使用未来游客的利益DB::statement或者DB::insert,还有另一种方式:

    DB::getPdo()->lastInsertId();
    

    2023-02-03 12:39 回答
  • 之后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);
    

    2023-02-03 12:39 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有