Item.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. namespace App\Model;
  3. use App\Traits\HasCustomFields;
  4. class Item extends DataScopeBaseModel
  5. {
  6. protected $table = "item"; //指定表
  7. const CREATED_AT = 'crt_time';
  8. const UPDATED_AT = 'upd_time';
  9. protected $dateFormat = 'U';
  10. const employee_column = "crt_id";
  11. public static $field = ['title','id','code','start_time','end_time','mark','crt_id','crt_time','state','budget','charge_id','item_attribute','field'];
  12. const TYPE_ONE = 1;
  13. const TYPE_TWO = 2;
  14. const TYPE_THREE = 3;
  15. const State_Type = [
  16. self::TYPE_ONE => '待开始',
  17. self::TYPE_TWO => '进行中',
  18. self::TYPE_THREE => '已完成',
  19. ];
  20. const Attr_TYPE_ONE = 1;
  21. const Attr_TYPE_TWO = 2;
  22. const Item_Attribute = [
  23. self::TYPE_ONE => '自主开发',
  24. self::TYPE_TWO => '合作开发',
  25. ];
  26. // 引入自定义字段预加载关系
  27. use HasCustomFields;
  28. // 作用域 里面关联了客户自定义的表头数据
  29. public function scopeWithCustomData($query, $menuId, $user)
  30. {
  31. if (empty($menuId)) {
  32. return $query;
  33. }
  34. $top_depart_id = $user['top_depart_id'];
  35. return $query->with(['customFieldValues' => function ($subQuery) use ($menuId, $top_depart_id) {
  36. //只查询设置的id 和 自定义字段的值 还有业务单据/档案的id(这个必须要 预加载里没有主外键关联关系就查询失败)
  37. $subQuery->select(['definition_id', 'field_value', 'model_id'])
  38. ->where('top_depart_id', $top_depart_id)
  39. ->whereHas('definition', function ($q) use ($menuId) {
  40. $q->where('menu_id', $menuId);
  41. });
  42. }]);
  43. }
  44. }