Laravel mencipta jadual yang salah
P粉546257913
P粉546257913 2024-03-31 23:23:45
0
2
380

Saya perlu mempunyai sejarah muat turun untuk setiap pengguna yang akan menggunakan sistem kami (pada asasnya, sistem untuk pengguna memuat turun siaran media sosial). Saya mencipta model "DownloadHistory" yang mengandungi medan ID, timestamp, download_history dan user_id. Apabila saya mencipta pengguna, contoh DownloadHistory hendaklah dibuat secara automatik dan jadual pengguna dikemas kini untuk mempunyai medan download_history_id untuk mengandungi id DownloadHistory's yang baru dibuat, seperti yang ditunjukkan dalam RegisterController saya:

$downloadHistory = DownloadHistory::create([
    'user_id' => $user->id
]);

DB::table('users')->where('id', $user->id)->update(['download_history_id' => $downloadHistory->id]);

Masalahnya ialah: Saya mendapat ralat yang tidak masuk akal bagi saya:

Sebab ia tidak masuk akal bagi saya ialah, saya tidak pernah mencipta muat turun_sejarah, tetapi saya telah mencipta muat turun_sejarah, jadi apakah ini? ? ? Model Muat Turun Sejarah saya ialah:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class DownloadHistory extends Model
{
    use HasFactory;

    protected $fillable = [
        'user_id',
    ];

    protected $casts = [
       'downloads' => 'array',
    ];

    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

Penghijrahan saya untuk mencipta jadual ialah:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateDownloadHistoryTable extends Migration
{  
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('download_history', function (Blueprint $table) {
            $table->id();                        
            $table->timestamps();
            $table->json('history');
            $table->integer('user_id');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('download_history');
    }
}

P粉546257913
P粉546257913

membalas semua(2)
P粉021708275

Tambahkan protected $table = 'download_history';

pada model
 'array',
    ];

    public function user()
    {
        return $this->belongsTo(User::class);
    }
}
P粉068510991

Dalam Laravel, nama jadual diandaikan sebagai jamak.

Rujukan: https://laravel.com/docs/9.x /eloquent#Nama jadual

Untuk membetulkannya, gunakan atribut $table dalam model anda.

protected $table = 'download_history';
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan