Sol*_*orp 260 php database laravel eloquent
我目前正在使用以下代码在表中插入数据:
<?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);
}
}
Run Code Online (Sandbox Code Playgroud)
我想返回插入的最后一个ID,但我不知道如何获取它.
亲切的问候!
xda*_*azz 342
之后save,$data->id应该是最后插入的id.
return Response::json(array('success' => true, 'last_insert_id' => $data->id), 200);
Run Code Online (Sandbox Code Playgroud)
有关更新的laravel版本,请尝试此操作
return response()->json(array('success' => true, 'last_insert_id' => $data->id), 200);
Run Code Online (Sandbox Code Playgroud)
Ben*_*ird 114
xdazz就在这种情况下,但对于谁可能使用未来游客的利益DB::statement或者DB::insert,还有另一种方式:
DB::getPdo()->lastInsertId();
Run Code Online (Sandbox Code Playgroud)
dav*_*ave 55
对于那些也喜欢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);
}
Run Code Online (Sandbox Code Playgroud)
Maj*_*bib 42
****对于Laravel****
首先创建一个对象,然后为该对象设置属性值,然后保存对象记录,然后获取最后插入的id.如
$user = new User();
$user->name = 'John';
$user->save();
Run Code Online (Sandbox Code Playgroud)
//现在获取最后插入的ID
$insertedId = $user->id;
echo $insertedId ;
Run Code Online (Sandbox Code Playgroud)
Aam*_*mir 42
如果表具有自动递增ID,请使用insertGetId方法插入记录,然后检索ID:
$id = DB::table('users')->insertGetId([
'email' => 'john@example.com',
'votes' => 0
]);
Run Code Online (Sandbox Code Playgroud)
请参阅:https://laravel.com/docs/5.1/queries#inserts
Muj*_*bur 16
在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;
}
}
Run Code Online (Sandbox Code Playgroud)
nga*_*kak 13
这是一个例子:
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);
}
Run Code Online (Sandbox Code Playgroud)
use*_*864 13
这在laravel 4.2中对我有用
$id = User::insertGetId([
'username' => Input::get('username'),
'password' => Hash::make('password'),
'active' => 0
]);
Run Code Online (Sandbox Code Playgroud)
小智 11
以下是我们如何在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.');
}
Run Code Online (Sandbox Code Playgroud)
Nik*_*aut 10
使用insertGetId插入和获得插入id在同一时间
来自doc
如果表具有自动递增ID,请使用insertGetId方法插入记录,然后检索ID:
通过 Model
$id = Model::insertGetId(["name"=>"Niklesh","email"=>"myemail@gmail.com"]);
Run Code Online (Sandbox Code Playgroud)
通过 DB
$id = DB::table('users')->insertGetId(["name"=>"Niklesh","email"=>"myemail@gmail.com"]);
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请访问:https://laravel.com/docs/5.5/queries#inserts
Far*_*han 10
对于插入()
例子:
$data1 = array(
'company_id' => $company_id,
'branch_id' => $branch_id
);
$insert_id = CreditVoucher::insert($data1);
$id = DB::getPdo()->lastInsertId();
dd($id);
Run Code Online (Sandbox Code Playgroud)
有几种方法可以获取最后插入的 id。一切都基于您在插入时使用的方法。在您的情况下,您可以获得如下所示的最后一个 ID:
$data->save();
$data->id;
Run Code Online (Sandbox Code Playgroud)
对于需要知道如果他们使用其他插入方法如何获得最后插入的 id 的其他人,方法如下:
使用create()方法
$book = Book::create(['name'=>'Laravel Warrior']);
$lastId = $book->id;
使用 insertGetId()
$id = DB::table('books')->insertGetId( ['name' => 'Laravel warrior'] ); $lastId = $id;
使用lastInsertId()方法
$lastId = DB::getPdo()->lastInsertId();
参考https://easycodesolution.com/2020/08/22/last-inserted-id-in-laravel/
您可以轻松获取最后插入的记录 ID
$user = User::create($userData);
$lastId = $user->value('id');
Run Code Online (Sandbox Code Playgroud)
从数据库中最后插入的记录中获取 Id 是一个很棒的技巧。
保存模型后,初始化的实例具有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
Run Code Online (Sandbox Code Playgroud)
小智 6
虽然这个问题有点过时了。我的快速而肮脏的解决方案如下所示:
$last_entry = Model::latest()->first();
Run Code Online (Sandbox Code Playgroud)
但我想它很容易受到频繁访问的数据库的竞争条件的影响。
| 归档时间: |
|
| 查看次数: |
407558 次 |
| 最近记录: |