Rumah  >  Soal Jawab  >  teks badan

Laravel mencipta jadual yang salah

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粉546257913P粉546257913173 hari yang lalu278

membalas semua(2)saya akan balas

  • P粉021708275

    P粉0217082752024-04-01 20:50:00

    Tambahkan protected $table = 'download_history';

    pada model
     'array',
        ];
    
        public function user()
        {
            return $this->belongsTo(User::class);
        }
    }

    balas
    0
  • P粉068510991

    P粉0685109912024-04-01 14:32:36

    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';

    balas
    0
  • Batalbalas