laravel 5 reletionship在两列上有很多

时间:2016-10-06 14:01:40

标签: mysql laravel laravel-4 laravel-5 laravel-5.2

我正在尝试在两列(record_id和table_name,

)上实现关系

这是我到目前为止所获得的,型号名称BatteryAssets:

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

请注意'battery_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`)

如你所见,我已经尝试将battery_assets放入``而且我试图将它们放入双引号'“battery_assets”'并且也没有引号

并且请不要说BatteryAssets表没有table_name列,我只想在where子句中使用它作为静态值,我也试过做

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

但它给出了同样的错误

2 个答案:

答案 0 :(得分:0)

该错误表示Colomn未找到,您要尝试的列名称为'被称为' tabel_name'。您确定列名称不是' table_name'? (用英语表,而不是荷兰语,至少我认为你是荷兰人)

所以它应该是:

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

如果您的专栏被调用' tabel_name'在您的数据库中。我建议使用英文命名,因为' name'是英文。

答案 1 :(得分:0)

有一个拼写错误,现在一切正常:

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