[英]Why is laravel changing the name of the column?
這是我收到的錯誤:
“ 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表上的外鍵(因為您尚未明確說明其含義)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.