OrderCommodity.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. namespace App;
  3. use App\Http\Controllers\Controller;
  4. use Illuminate\Database\Eloquent\Model;
  5. use App\Traits\ModelLogChanging;
  6. class OrderCommodity extends Model
  7. {
  8. use ModelLogChanging;
  9. protected $fillable = [
  10. 'id', 'order_id','commodity_id', 'amount','wms_ptltaskid','location'
  11. ];
  12. protected $appends=['barcode','name','sku'];
  13. public function order(){
  14. return $this->belongsTo('App\Order', 'order_id','id');
  15. }
  16. public function commodity(){
  17. return $this->hasOne('\App\Commodity','id','commodity_id');
  18. }
  19. public function orderBin(){
  20. return $this->hasOne(OrderBin::class,'order_id','order_id');
  21. }
  22. public function getBarcodeAttribute(){
  23. $commodity=$this->commodity()->first();
  24. if($commodity)return $commodity['barcode'];
  25. return '';
  26. }
  27. public function getNameAttribute(){
  28. return $this->commodity['name']??'';
  29. }
  30. public function getSkuAttribute(){
  31. return $this->commodity['sku']??'';
  32. }
  33. public function getLocationAttribute($var){
  34. if($var){
  35. return preg_replace('/_\d$/','',$var);
  36. }
  37. return $var??'';
  38. }
  39. public function getMaterialBoxPositionAttribute(){
  40. if($this->attributes['location']){
  41. preg_match('/_(\d)$/',$this->attributes['location'],$arr);
  42. if(isset($arr[1]))
  43. return $arr[1];
  44. }
  45. return null;
  46. }
  47. }