mirror of
https://github.com/nihonbuzz/nihonbuzz-academy.git
synced 2026-01-27 02:41:58 +07:00
feat: implement Phase 7 (Course Player v2, Furigana, XP System, Integrated Vocab)
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('lesson_vocabulary', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->foreignUuid('lesson_id')->constrained()->cascadeOnDelete();
|
||||
$table->foreignUuid('vocabulary_id')->constrained()->cascadeOnDelete();
|
||||
$table->unique(['lesson_id', 'vocabulary_id']);
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('lesson_vocabulary');
|
||||
}
|
||||
};
|
||||
@@ -114,7 +114,43 @@ class TestDataSeeder extends Seeder
|
||||
);
|
||||
}
|
||||
|
||||
// 5. Update User Stats
|
||||
// 5. Vocabularies
|
||||
$vocab1 = \App\Models\Vocabulary::updateOrCreate(
|
||||
['word' => '{私|わたし}'],
|
||||
[
|
||||
'reading' => 'わたし',
|
||||
'romaji' => 'watashi',
|
||||
'meaning_id' => 'Saya',
|
||||
'meaning_en' => 'I / Me',
|
||||
'type' => 'noun',
|
||||
'level_id' => $n5->id,
|
||||
]
|
||||
);
|
||||
|
||||
$vocab2 = \App\Models\Vocabulary::updateOrCreate(
|
||||
['word' => '{先生|せんせい}'],
|
||||
[
|
||||
'reading' => 'せんせい',
|
||||
'romaji' => 'sensei',
|
||||
'meaning_id' => 'Guru',
|
||||
'meaning_en' => 'Teacher',
|
||||
'type' => 'noun',
|
||||
'level_id' => $n5->id,
|
||||
]
|
||||
);
|
||||
|
||||
// Attach to lessons
|
||||
$lesson1 = Lesson::where('slug', 'welcome-n5')->first();
|
||||
if ($lesson1) {
|
||||
$lesson1->vocabularies()->syncWithoutDetaching([$vocab1->id, $vocab2->id]);
|
||||
}
|
||||
|
||||
$lesson2 = Lesson::where('slug', 'vowels-kana')->first();
|
||||
if ($lesson2) {
|
||||
$lesson2->vocabularies()->syncWithoutDetaching([$vocab1->id]);
|
||||
}
|
||||
|
||||
// 6. Update User Stats
|
||||
$admin->update([
|
||||
'xp_points' => 1250,
|
||||
'current_streak' => 5,
|
||||
|
||||
Reference in New Issue
Block a user