这是我收到的错误:
“ SQLSTATE [42S22]:[Microsoft] [SQL Server的ODBC驱动程序13] [SQL Server]无效的列名' user_user_id '。(SQL:插入[APPLICATIONS]([app_nm],[app_path],[app_readme_path],[ app_manual_path],[is_url],[user_user_id])值(TEST,uploads / 2240120001.jpg,uploads / 50225114.5-Data.pdf,uploads / 9275171481557696855-FixedDeposits.docx,0、1))”)
我有3个型号:
User.php
public $primaryKey = 'user_id';
public function posts()
{
return $this->hasMany('App\Post');
}
public function roles()
{
return $this->belongsToMany('App\Role','USER_ROLE','user_id','role_id');
}
Role.php
public $timestamps = false;
public $primaryKey = 'role_id';
public function users()
{
return $this->belongsTo('App\User');
}
Post.php
public $timestamps = false;
protected $table = 'APPLICATIONS';
protected $primaryKey='app_id';
public function user()
{
return $this->belongsTo('App\User');
}
Laravel将'user_'添加到'user_id'列名称中,导致上述错误。我已经检查了laravel 5.5 API,以查看是否需要提供其他参数,但事实并非如此。
什么会导致这种串联,我该如何解决?
您尚未在Post上正确定义用户关系。默认情况下,如果您没有显式添加相关表,Eloquent将从表名和主键名中推断出外键字段的名称。
在您的情况下,关系表名称为user,而该表的主键已定义为user_id。因此,它假定您的APPLICATIONS表中的外键是user_user_id。
为了解决这个问题,在关系中显式命名您的外部表ID和其他表ID:
public function user()
{
return $this->belongsTo('App\User', 'user_id', 'user_id');
}
上面代码中的第二个参数将是您在APPLICATIONS表上的外键(因为您尚未明确说明其含义)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句