Penghijrahan Laravel untuk menambah atribut nullable pada lajur jadual sedia ada
P粉674757114
P粉674757114 2023-09-05 12:58:02
0
1
499
<p>Saya telah mula menulis projek peribadi kecil di Laravel 10. Masalah yang saya hadapi adalah seperti berikut: </p> <ol> <li>Saya mempunyai jadual pengguna dengan UUID kunci asing - role_id. </li> <li>Saya mahu menambah atribut nullable pada lajur ini tanpa memadamkan jadual. </li> <li>Saya mencipta migrasi baharu untuk membuat perubahan. </li> <li>Pakej doktrin/dbal dipasang untuk (secara teorinya) menukar lajur. </li> <li>Kod saya dalam penghijrahan adalah seperti berikut:</li> </ol> <pre class="brush:php;toolbar:false;">public function up(): void { Skema::jadual('pengguna', fungsi (Blueprint $table) { $table->foreignUuid('role_id')->nullable()->constrained('roles')->change(); }); } /*** Balikkan penghijrahan.*/ fungsi awam down(): void { Skema::jadual('pengguna', fungsi (Blueprint $table) { $table->foreignUuid('role_id')->nullable(false)->constrained('roles')->change(); }); }</pre> <p>Tetapi apabila saya menjalankan php artisan migrate, saya mendapat ralat berikut - SQLSTATE[42S21]: Lajur sudah wujud: 1060 Nama lajur pendua 'role_id' (Sambungan: mysql, SQL: alter table users add role_id char(36 ) null). </p> <p>Sebarang cadangan tentang cara mengubah suai lajur dengan betul akan sangat dihargai. </p>
P粉674757114
P粉674757114

membalas semua(1)
P粉068486220

Anda boleh mencuba perkara berikut:

      Schema::table('users', function (Blueprint $table) {
            $table->char('role_id', 36)->nullable()->constrained('roles')->change();
        });

Atau anda boleh menggunakan pernyataan SQL asal:

    DB::statement('ALTER TABLE users MODIFY role_id CHAR(36) NULL');
    DB::statement('ALTER TABLE users ADD CONSTRAINT fk_users_role_id FOREIGN KEY (role_id) REFERENCES roles (id)');

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan