簡體   English   中英

laravel為什么更改列名?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM