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

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

干鑫鹏
2023-03-14

我试图删除相应的行。

Pasien表dam用户表

当我删除pasien表中的一行时,连接到users表的行也应该被删除。然而,这显示了一个让我感到困惑的错误,不管我是否错误地实现了belongsTo,并且在模型上有很多。

我曾尝试将其反转(belongsTo和hasMany),但仍然是一个错误。此问题的正确代码行是什么?

用户表

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

帕西恩表

  • id
  • iduser
  • 状态

帕西恩模型

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个答案

况博容
2023-03-14

问题是Pasiens表中的外键iduser不遵循laravel遵循的约定(它期望列名为user_id,因为它指向用户表)

正如文件中提到的:关系

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

为了解决这个问题,你必须提供你的自定义外键名称到属性到has很多,这样laravel可以正确地确定两个表之间的关系。

在用户模型中

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

在Pasien模型中

public function users()
{
    return $this->hasMany('App\Users', 'iduser');
}
 类似资料:
  • 错误:java.SQL.sqlsyntaxerrorexception:您的SQL语法中有一个错误;请查看与您的MariaDB服务器版本相对应的手册,以便在第1行'by name'附近使用正确的语法

  • 问题内容: 我正在一个已经存在的cakephp 1.3项目中,我需要向数据库中添加一个新表。我的控制器中有这个: 这给了我这个错误: 这是它正在尝试创建的查询: 显然我的控制器代码是错误的,但是我不确定如何将Email表与ShootingPlacement关联起来。我认为我的模型是正确的。到目前为止,如果我有这个: 它将从Shooting,ShootingPlacement和Person中检索行,

  • 在多供应商网站上工作。当商店/供应商用户想登录时突然得到这个错误没有问题普通用户这里有两种类型用户一种是供应商或商店老板/另一种普通客户当供应商想登录时得到这个错误。但正常用户没有问题面临的登录。添加新列,但问题是继续SQL完整性错误。 这是登录控制器。 登录控制器的详细信息 路线 车间管理控制员 商店管理模式 **店铺模型** 错误

  • 问题内容: 我有一个名为表有三列:,,。 我正在尝试创建一个查询,该查询将根据昵称返回余额,并且在使用此查询时遇到错误: 有人可以在这里看到我做错了吗? 问题答案: 反引号(`)用于标识符,例如表名,列名等。单引号(’)用于字符串文字。 您想做: 或者,更明确地说: 如果没有歧义的可能性,并且表/列名称没有特殊字符或空格,则可以将`设置为off。 这是一些干燥且难以阅读的文档:http : //d

  • 为什么查询给出这个错误: #1054-“WHERE子句”中得列“NOPL”未知?