删除相关行Laravel ['where子句'中的未知列'users.pasien_id']

时间:2019-07-02 15:46:02

标签: laravel laravel-5.8

我试图删除相应的行。

Pasien表dam Users表

当我删除pasien表中的一行时,也应该删除连接到users表的行。但是,无论我是否在模型上错误地实现了belongsTo和hasMany,这都会使我感到困惑。

我试图将其反转(属于tos和hasMany),但这仍然是一个错误。解决此问题的正确代码是什么?

用户表

  • id
  • 名称
  • 电子邮件
  • 密码

Pasien表

  • id
  • iduser
  • 状态

Pasien模型

public function users()
    {
        return $this->hasMany('App\Users');
    }
public static function boot()
  {
    parent::boot();
      static::deleting(function($pasien) {
        $pasien->users()->delete();
      });
  }

用户模型

public function pasien()
    {
        return $this->belongsTo('App\Pasien');
    }

Pasien控制器

public function destroy(Pasien $pasien)
    {
        $pasien->delete();

        return redirect()->route('pasien.index')
        ->with('success','Pasien deleted successfully');
    }

1 个答案:

答案 0 :(得分:0)

问题是iduser表中的外键Pasiens不遵循laravel遵循的约定(它期望列名在指向{{1时为user_id }}表)

如文档Eloquent: Relationships

中所述
  

按照惯例,Eloquent将采用拥有模型的“ snake case”名称,并在其后缀_id。

要解决此问题,您必须为UsersbelongsTo提供自定义外键名称,以便laravel可以正确确定两个表之间的关系。

用户模型中

hasMany

Pasien 模型中

public function pasien()
{
    return $this->belongsTo('App\Pasien', 'iduser');
}