当前位置: 首页 > 知识库问答 >
问题:

Laravel获取最新插入用户的id

司徒瀚
2023-03-14
<?php

namespace App\Http\Controllers\Auth;

use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
use App\Complaint;


class RegisterController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Register Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles the registration of new users as well as their
    | validation and creation. By default this controller uses a trait to
    | provide this functionality without requiring any additional code.
    |
    */

    use RegistersUsers;

    /**
     * Where to redirect users after login / registration.
     *
     * @var string
     */
    protected $redirectTo = '/home';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest');
    }

    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return \Illuminate\Contracts\Validation\Validator
     */
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|max:255',
            'email' => 'required|email|max:255|unique:users',
            'password' => 'required|min:6|confirmed',
            'username' => 'required|unique:users',
            'role' => 'required'
        ]);
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return User
     */
    protected function create(array $data)
    {

        $user = new User;
        $user->name = $data['name'];
        $user->email = $data['email'];
        $user->username = $data['username'];
        $user->password = bcrypt($data['password']);
        $user->role = $data['role'];
        $user->templateURL = "";

        /*$user = User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'username' => $data['username'],
            'password' => bcrypt($data['password']),
            'role' => $data['role'],
            'templateURL' => ""
        ]);*/

        $user->save();


        if($data['role'] == 'Verkäufer'){
            $complaintRow = Complaint::create([
               'user_id' => $user->id,
                'complaintCount' => 0
            ]);
        }


        switch($data['role']){
            case 'Käufer':
                $user->attachRole(2);
                break;
            case 'Verkäufer':
                $user->attachRole(3);
                break;
            default:
                $user->attachRole(2);
                break;
        }


        return $user;
    }
}

不管怎样,感谢所有人的回答。

共有1个答案

楚瑞
2023-03-14

根据Laravel Eloquent ORM,$user->Id将返回用户的Id。如果您获取的是null,那么保存时可能会出错。(https://stackoverflow.com/a/21084888/6628079)

保存后尝试打印$user

更新:如果用户保存成功,在投诉表中添加数据会更好。

protected function create(array $data)
{

    $user = new User;
    $user->name = $data['name'];
    $user->email = $data['email'];
    $user->username = $data['username'];
    $user->password = bcrypt($data['password']);
    $user->role = $data['role'];
    $user->templateURL = "";

    /*$user = User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'username' => $data['username'],
        'password' => bcrypt($data['password']),
        'role' => $data['role'],
        'templateURL' => ""
    ]);*/

    if ($user->save()) {
        if ($data['role'] == 'Verkäufer') {
            $complaintRow = Complaint::create([
                'user_id' => $user->id,
                'complaintCount' => 0
            ]);
        }


        switch ($data['role']) {
            case 'Käufer':
                $user->attachRole(2);
                break;
            case 'Verkäufer':
                $user->attachRole(3);
                break;
            default:
                $user->attachRole(2);
                break;
        }


        return $user;
    } else {
        // Your code if user doesn't save successfully.
    }
}
 类似资料:
  • 问题内容: 我目前正在使用以下代码在表中插入数据: 我想返回插入的最后一个ID,但我不知道如何获取它。 亲切的问候! 问题答案: 后 保存 ,应该是最后的ID插入。 可以这样使用。 对于更新的laravel版本,请尝试此

  • 如何将最新文档插入(一个独立的、没有RS的)MongoDb,而不是现有的集合? 如何在文档之后插入所有文档?

  • 问题内容: 我使用触发器来插入行,并希望使用上一个创建的ID供后续查询使用。 我该怎么办? 代码如下: 问题答案: 您是否看过LAST_INSERT_ID()?但要注意: 如果使用单个INSERT语句插入多行,则LAST_INSERT_ID()仅返回为第一个插入行生成的值。

  • 这是我的密码: 如您所知,它会在数据库中插入一个新行。现在我需要获取插入行的。我怎么能得到这个? 注意,我知道,如果我使用

  • 我正在尝试获取firstOrCreate()调用后在数据库中插入的最后一个ID。我已将代码复制到下面: 如何插入最后一个ID? 我已经研究了其他Laravel请求来获取最后一个插入标识,但我相信这个实例是不同的,因为它们没有使用firstOrcreate()。 提前谢谢。