【问题标题】:Laravel SQLSTATE[42S22]: Column not found: 1054 Unknown columnLaravel SQLSTATE [42S22]:找不到列:1054 未知列
【发布时间】:2019-10-02 11:17:36
【问题描述】:

我正在尝试与讲师表和用户表建立关系。所以这是create_lectures_table的代码

public function up()
    {
        Schema::create('lecturers', function (Blueprint $table) {
            $table->bigIncrements('id');


            $table->integer('class03');
            $table->integer('class03_stream');
            $table->date('class03_from');
            $table->date('class03_to');

            $table->string('remarks')->nullable();

            $table->integer('created_user_id')->unsigned()->nullable();
            $table->integer('updated_user_id')->unsigned()->nullable();
            $table->foreign('created_user_id')->references('id')->on('users');
            $table->foreign('updated_user_id')->references('id')->on('users');
            $table->timestamps();
        });
    }

这是讲师模型

class Lecturer extends Model
{
    protected $table = 'lecturers';

    protected $fillable = [

        'class03', 'class03_stream' ,'class03_from','class03_to','remarks','created_user_id','updated_user_id',

    ];

    public function user(){
      return $this->hasMany('PMS\User');
    }
}

这是控制器的讲师索引功能

public function index(Lecturer $model)
    {
        return view('lecturers.index',['lecturers' => $model->paginate(15)]);
    }

这是 create_users_table

 public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('user');
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->string('usertype');
            $table->boolean('activestatus')->default(false);
            $table->rememberToken();
            $table->timestamps();

        });
    }

这是用户模型


class User extends Authenticatable
{
    use Notifiable;



    public function lecturer(){
        return $this->belongsTo('PMS\Lecturer');
    }


    protected $fillable = [
        'name', 'email', 'password','usertype',
    ];

有了这个,我想做的是查看将通过系统创建讲师的用户名。所以我在 view.blade.php 中回显了用户名,如下所示

<td>{{ $lecturer->user->name }}

当我转到视图时,它会生成此错误。

ErrorException (E_ERROR)
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'users.lecturer_id' in 'where clause' (SQL: select * from `users` where `users`.`lecturer_id` = 1 and `users`.`lecturer_id` is not null) (View: E:\BIT FINAL YEAR PROJECTS\20190419-using-template\resources\views\lecturers\index.blade.php)

谁能告诉我怎么了。 谢谢

【问题讨论】:

  • 您的users 表没有名为lecturer_id 的列。

标签: mysql database laravel


【解决方案1】:

我认为你的 Eloquent 人际关系是错误的。尝试将它们更改为如下:

讲师

public function user(){
    return $this->belongsTo('PMS\User', 'created_user_id');
}

用户

public function lecturers(){
    return $this->hasMany('PMS\Lecturer', 'created_user_id');
}

【讨论】:

    猜你喜欢
    • 2018-02-21
    • 2015-12-08
    • 2018-11-02
    • 2017-04-03
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    相关资源
    最近更新 更多