SourcePaper.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace App\Models;
  3. use Illuminate\Database\Eloquent\Factories\HasFactory;
  4. use Illuminate\Database\Eloquent\Model;
  5. use Illuminate\Database\Eloquent\Relations\BelongsTo;
  6. use Illuminate\Database\Eloquent\Relations\HasMany;
  7. class SourcePaper extends Model
  8. {
  9. use HasFactory;
  10. protected $fillable = [
  11. 'uuid',
  12. 'source_file_id',
  13. 'order',
  14. 'title',
  15. 'full_title',
  16. 'chapter',
  17. 'grade',
  18. 'term',
  19. 'edition',
  20. 'textbook_series',
  21. 'source_type',
  22. 'source_year',
  23. 'raw_markdown',
  24. 'detected_metadata',
  25. ];
  26. protected $casts = [
  27. 'detected_metadata' => 'array',
  28. 'order' => 'integer',
  29. 'created_at' => 'datetime',
  30. 'updated_at' => 'datetime',
  31. ];
  32. public function file(): BelongsTo
  33. {
  34. return $this->belongsTo(SourceFile::class, 'source_file_id');
  35. }
  36. public function parts(): HasMany
  37. {
  38. return $this->hasMany(PaperPart::class, 'source_paper_id');
  39. }
  40. public function candidates(): HasMany
  41. {
  42. return $this->hasMany(PreQuestionCandidate::class, 'source_paper_id');
  43. }
  44. public function questionRefs(): HasMany
  45. {
  46. return $this->hasMany(PaperQuestionRef::class, 'source_paper_id');
  47. }
  48. }