Laravel5 relationship在两个列上有许多

ryoqjall  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(409)

我试图在两列上实现关系,记录\ id和表\ name,
以下是我目前得到的,型号名称:

public function Attachments()
    {
       return $this->hasMany('App\Attachments','record_id','id')->where('tabel_name','`battery_assets`');
    }

请注意,“battery\u asstes”是一个字符串,因此它不是动态的,我尝试将其设置为字符串,但出现以下错误:

QueryException in Connection.php line 761:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'tabel_name' in 'where clause' (SQL: select * from `attachments` where `attachments`.`record_id` = 1 and `attachments`.`record_id` is not null and `tabel_name` = `battery_assets`)

正如你所看到的,我试着把电池资产放在``里,也试着把它们放在双引号的“电池资产”里,也没有引号
另外,请注意batteryassets表没有table\u name列,我只想在where子句中将其用作静态值,我也尝试过这样做

->where('attachments.tabel_name','"battery_assets"');

但它给出了同样的错误

4dbbbstv

4dbbbstv1#

有一个输入错误,现在一切正常:

public function Attachments()
    {
       return $this->hasMany('App\Attachments','record_id','id')->where('table_name','battery_assets');
    }
lvjbypge

lvjbypge2#

错误说明找不到column,您试图“调用”的列名称为“tabel\u name”。您确定列名不是“table\u name”吗(table用英语而不是荷兰语,至少我认为你是荷兰人)
所以应该是:

public function Attachments()
    {
       return $this->hasMany('App\Attachments','record_id','id')->where('table_name','`battery_assets`');
    }

如果您的列在数据库中被称为“tabel\u name”。我建议用英文命名,因为“name”是英文的。

相关问题