StatTreeLine.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace App\Models;
  3. use Illuminate\Database\Eloquent\Factories\HasFactory;
  4. use Illuminate\Database\Eloquent\Model;
  5. class StatTreeLine extends Model
  6. {
  7. protected $table = 'stat_tree_line';
  8. public $timestamps = false;
  9. public function getRouteKeyName()
  10. {
  11. return 'uid';
  12. }
  13. public function lineClauses(){
  14. return $this->hasMany(StatTreeLineClause::class, 'stat_tree_line_id', 'id');
  15. }
  16. public function statTree(){
  17. return $this->hasOne(StatTree::class, 'id', 'stat_tree_id');
  18. }
  19. public function parent(){
  20. return $this->hasOne(StatTreeLine::class, 'id', 'parent_stat_tree_line_id');
  21. }
  22. public function children(){
  23. return $this->hasMany(StatTreeLine::class, 'parent_stat_tree_line_id', 'id')
  24. ->orderBy('tree_order_position_index');
  25. }
  26. public function reportColumns(){
  27. return $this->hasMany(StatTreeLineReportColumn::class, 'stat_tree_line_id', 'id')
  28. ->orderBy('position_index');
  29. }
  30. public function displayLabel() {
  31. $lastStatTreeLineClause = StatTreeLineClause::where('stat_tree_line_id', $this->id)
  32. ->orderBy('position_index', 'DESC')
  33. ->first();
  34. if($lastStatTreeLineClause) {
  35. return $lastStatTreeLineClause->clause_label;
  36. }
  37. return '-';
  38. }
  39. public function columnsJSON() {
  40. $columns = [];
  41. foreach ($this->reportColumns as $column) {
  42. $columns[] = [
  43. "label" => $column->label,
  44. "display_key" => $column->display_key,
  45. ];
  46. }
  47. return json_encode($columns);
  48. }
  49. }