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'); } }
Tambahkan
pada modelprotected $table = 'download_history';
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.