Order.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <?php
  2. namespace App;
  3. use App\Traits\ModelTimeFormat;
  4. use Illuminate\Database\Eloquent\Model;
  5. class Order extends Model
  6. {
  7. //
  8. use ModelTimeFormat;
  9. protected $fillable = [
  10. 'created_at', 'code', 'shop_id', 'owner_id', 'client_code',
  11. 'logistic_id', 'consignee_name', 'consignee_phone', 'province',
  12. 'city', 'district', 'address', 'wms_status','warehouse_id','wms_edittime'];
  13. /*
  14. * wms订单号 code=>DOC_ORDER_HEADER[orderno]
  15. * wms客户订单号 client_code=>DOC_ORDER_HEADER['soreference1']
  16. * wms订单状态 wms_status=>
  17. * 仓库 warehouse_id=>DOC_ORDER_HEADER['WAREHOUSEID']
  18. */
  19. protected $appends = [
  20. 'logisticNumbers',
  21. 'amount',
  22. 'commodityPackages'
  23. ];
  24. public function logistic()
  25. {
  26. return $this->hasOne(Logistic::class, 'id', 'logistic_id');
  27. }
  28. public function issue()
  29. {
  30. return $this->belongsTo(OrderIssue::class, 'id', 'order_id');
  31. }
  32. public function shop()
  33. {
  34. return $this->belongsTo(Shop::class, 'shop_id', 'id');
  35. }
  36. public function owner()
  37. {
  38. return $this->hasOne(Owner::class, 'id', 'owner_id');
  39. }
  40. public function packages()
  41. {
  42. return $this->hasMany(OrderPackage::class,'order_id','id');
  43. }
  44. public function warehouse()
  45. {
  46. return $this->hasOne(Warehouse::class, 'id', 'owner_id');
  47. }
  48. public function getLogisticNumbersAttribute()
  49. {
  50. $packages = $this->packages;
  51. if (!$packages) {
  52. return [];
  53. } else {
  54. $arr = [];
  55. foreach ($packages as $package) {
  56. array_push($arr, $package->logistic_number);
  57. }
  58. return $arr;
  59. }
  60. }
  61. public function getAmountAttribute()
  62. {
  63. $packages = $this->packages;
  64. if (!$packages) {
  65. return 0;
  66. } else {
  67. $count = 0;
  68. foreach ($packages as $package) {
  69. foreach ($package->commodities as $item) {
  70. $count += $item->amount;
  71. }
  72. }
  73. return $count;
  74. }
  75. }
  76. public function getCommodityPackagesAttribute()
  77. {
  78. $packages = $this->packages;
  79. if (!$packages) {
  80. return 0;
  81. } else {
  82. $count = 0;
  83. foreach ($packages as $package) {
  84. foreach ($package->commodities as $item) {
  85. $count++;
  86. }
  87. }
  88. return $count;
  89. }
  90. }
  91. public function delete()
  92. {
  93. $this->packages()->delete();
  94. return parent::delete();
  95. }
  96. public function deleteSafe()
  97. {
  98. return parent::delete();
  99. }
  100. }