【问题标题】:How to fix 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'where clause' (SQL: select * from `users` where `id` = 0 limit 1)'如何修复'SQLSTATE [42S22]:找不到列:1054'where子句'中的未知列'id'(SQL:select * from `users` where `id` = 0 limit 1)'
【发布时间】:2018-12-31 09:11:11
【问题描述】:

我已编辑为 Laravel 提供的默认注册表单。

我想用'student_no' 替换'id'

如何在查询中进行更改?我无法找到该查询,因为它是自动生成的。下面提到的代码是RegisterController.php中的代码。

RegisterController.php

    <?php

    namespace App\Http\Controllers\Auth;

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

    class RegisterController extends Controller
    {
        /*
        |--------------------------------------------------------------------------
        | Register Controller
        |-----------------------------------------------------------------------



        use RegistersUsers;



    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, [
            'student_no'=> 'required|unique:users',
            'name' => 'required|string|max:255',
            'CID_No'=> 'required|max:8',
            'DOB'=> 'required',
            'Department'=> 'required',
            'Programme'=> 'required',
            'email' => 'required|string|email|max:255|unique:users',
            //'Joining_Year'=> 'required',
            'graduation_Year'=> 'required',
            'password' => 'required|string|min:6|confirmed',
        ]);
    }



    /**
         * Create a new user instance after a valid registration.
         *
         * @param  array  $data
         * @return \App\User
         */


    protected function create(array $data)
        {
            return User::create([
                'student_no'=> $data['student_no'],
                'name' => $data['name'],
                'CID_No' => $data['CID_No'],
                'DOB' => $data['DOB'],
                'Department' => $data['Department'],
                'Programme' => $data['Programme'],
                'email' => $data['email'],
                'Joining_Year' => $data['Joining_year'],
                'graduation_Year' => $data['graduation_Year'],
                'password' => bcrypt($data['password']),
            ]);
        }
    }

【问题讨论】:

  • 为什么要改变表结构?如果您需要自己的查询,您可以为 id AS student_no 等列使用别名
  • 这可能会对您有所帮助。如果您想将 id 列覆盖为其他名称:stackoverflow.com/questions/27763020/…

标签: php laravel


【解决方案1】:

自动假定您的主键列将是id。为了使其正常工作,您应该在模型中设置主键 User.php

protected $primaryKey = 'student_no';

【讨论】:

    猜你喜欢
    • 2015-06-03
    • 1970-01-01
    • 2019-09-12
    • 2021-11-08
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    相关资源
    最近更新 更多