以下是我收到的错误:
“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,看看是否有一个需要提供的附加参数,但似乎并非如此。
导致此连接的原因是什么?如何解决?
答案 0 :(得分:2)
您尚未正确定义Post上的用户关系。默认情况下,如果您没有显式添加相关表,Eloquent将从表名和主键名推断出外键字段的名称。
在您的情况下,关系表名称是 user ,并且您已定义为 user_id 的该表的主键。因此,它假定您的APPLICATIONS表中的外键是 user_user_id 。
要解决此问题,请明确说明您的关系中的外国和其他表ID:
public function user()
{
return $this->belongsTo('App\User', 'user_id', 'user_id');
}
上面代码中的第二个参数将是您在APPLICATIONS表上的外键(因为您没有明确说明其意图)