AlbumProductAttrModel.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. namespace App\Models;
  3. use App\Models\BaseModel;
  4. use Illuminate\Database\Eloquent\SoftDeletes;
  5. /**
  6. * @description 产品属性
  7. * @author system;
  8. * @version 1.0
  9. * @date 2018-07-03 16:51:48
  10. *
  11. */
  12. class AlbumProductAttrModel extends BaseModel
  13. {
  14. use SoftDeletes;
  15. /**
  16. * 数据表名
  17. *
  18. * @var string
  19. *
  20. */
  21. protected $table = 'album_product_attr';
  22. /**
  23. * 主键
  24. */
  25. protected $primaryKey = 'id';
  26. //分页
  27. protected $perPage = PAGE_NUMS;
  28. /**
  29. * 可以被集体附值的表的字段
  30. *
  31. * @var string
  32. */
  33. protected $fillable = [
  34. 'name',
  35. 'pid',
  36. 'attr_type',
  37. 'sort',
  38. 'store_id'
  39. ];
  40. public static function _tree($items, $pid = 0, $level = 0, $layer = 3) {
  41. if ($level > $layer) {
  42. return [];
  43. }
  44. $result = [];
  45. foreach ($items as $item) {
  46. if ($item->pid == $pid) {
  47. $node = [
  48. 'id' => $item->id,
  49. 'name' => $item->name,
  50. 'created_at' => $item->created_at,
  51. 'updated_at' => $item->updated_at,
  52. 'pid' => $item->pid,
  53. 'children' => self::_tree($items, $item->id, $level + 1),
  54. ];
  55. if ($level === 1) {
  56. $result[$item->id] = $node;
  57. } else {
  58. $result[] = $node;
  59. }
  60. }
  61. }
  62. return $result;
  63. }
  64. public static function genAreaTree($storeid,$layer = 3) {
  65. if ($layer <= 1) {
  66. return [];
  67. }
  68. $items = self::whereBetween('attr_type', [0, $layer])->where('store_id',$storeid)->orderBy('attr_type', 'desc')->orderBy('updated_at','desc')->get();
  69. $result = self::_tree($items, 0, 0, $layer);
  70. ksort($result);
  71. return $result;
  72. }
  73. public function pid(){
  74. if($this->pid){
  75. return self::find($this->pid)?self::find($this->pid)->name:$this->pid;
  76. }else{
  77. return '';
  78. }
  79. }
  80. public function attr_type(){
  81. switch ($this->attr_type){
  82. case 1:
  83. return '型号';
  84. break;
  85. case 2:
  86. return '颜色';
  87. break;
  88. default:
  89. return '品类';
  90. break;
  91. }
  92. }
  93. }