PaperPart.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. use App\Models\Question;
  8. class PaperPart extends Model
  9. {
  10. use HasFactory;
  11. protected $fillable = [
  12. 'source_paper_id',
  13. 'order',
  14. 'order_index',
  15. 'title',
  16. 'type',
  17. 'part_label',
  18. 'raw_markdown',
  19. 'question_count',
  20. 'detected_features',
  21. 'meta',
  22. ];
  23. protected $casts = [
  24. 'order' => 'integer',
  25. 'order_index' => 'integer',
  26. 'question_count' => 'integer',
  27. 'detected_features' => 'array',
  28. 'meta' => 'array',
  29. 'created_at' => 'datetime',
  30. 'updated_at' => 'datetime',
  31. ];
  32. public function paper(): BelongsTo
  33. {
  34. return $this->belongsTo(SourcePaper::class, 'source_paper_id');
  35. }
  36. public function candidates(): HasMany
  37. {
  38. return $this->hasMany(PreQuestionCandidate::class, 'part_id');
  39. }
  40. public function questions(): HasMany
  41. {
  42. return $this->hasMany(Question::class, 'paper_part_id');
  43. }
  44. public function questionRefs(): HasMany
  45. {
  46. return $this->hasMany(PaperQuestionRef::class, 'part_id');
  47. }
  48. }