我在遷移表中有這一行
Schema::create('xyzTableName', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('userId');
$table->foreign('userId')->references('id')->on('userId');
$table->timestamps();
});
我錯誤地寫在('userId')上的地方我想要的是('users')
現在我做到了,(在新的遷移中,因為我無法運行migrate:fresh)
Schema::create('xyzTableName', function (Blueprint $table) {
$table->foreign('userId')->references('id')->on('users')->change();
});
但我不知道為什么它不起作用,請幫助我
uj5u.com熱心網友回復:
您可以洗掉舊密鑰并構建一個新密鑰
Schema::table('xyzTableName', function (Blueprint $table) {
$table->dropForeign('xyzTableName_users_userId_foreign');
$table->foreign('userId')->references('id')->on('users');
});
Laravel 總是會嘗試使用它的模式來創建鍵。由于您沒有遵循 laravel 推薦的名稱和欄位模式,我無法確定字串 'xyzTableName_users_userId_foreign' 是否正確。
將外鍵名稱簽入您的資料庫。這是我會使用的命令 If MySQL
SELECT
TABLE_NAME,
COLUMN_NAME,
CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,
REFERENCED_COLUMN_NAME
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
REFERENCED_TABLE_SCHEMA = 'db_name'
AND REFERENCED_TABLE_NAME = 'table_name'
AND REFERENCED_COLUMN_NAME = 'column_name';
參考
uj5u.com熱心網友回復:
在模型中,您可以給表提供保護。
namespace App\Models;
class Category extends Model
{
protected $table = 'new_table_name';
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/412280.html
標籤:
上一篇:如何從外部.txt檔案中讀取資料,將它們存盤在陣列中,過濾并將它們寫入Fortran90的新檔案中?
下一篇:如何洗掉磁區的唯一子磁區
