OrderCommodity.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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 $connection="mysql3306";
  10. protected $fillable = [
  11. 'id', 'order_id','commodity_id', 'amount','wms_ptltaskid','location'
  12. ];
  13. protected $appends=['barcode','name','sku'];
  14. public function order(){
  15. return $this->belongsTo('App\Order', 'order_id','id');
  16. }
  17. public function commodity(){
  18. return $this->hasOne('\App\Commodity','id','commodity_id');
  19. }
  20. public function orderBin(){
  21. return $this->hasOne(OrderBin::class,'order_id','order_id');
  22. }
  23. public function getBarcodeAttribute(){
  24. $commodity=$this->commodity()->first();
  25. if($commodity)return $commodity['barcode'];
  26. return '';
  27. }
  28. public function getNameAttribute(){
  29. return $this->commodity['name']??'';
  30. }
  31. public function getSkuAttribute(){
  32. return $this->commodity['sku']??'';
  33. }
  34. public function getLocationAttribute($var){
  35. if($var){
  36. return preg_replace('/_\d$/','',$var);
  37. }
  38. return $var??'';
  39. }
  40. public function getMaterialBoxPositionAttribute(){
  41. if($this->attributes['location']){
  42. preg_match('/_(\d)$/',$this->attributes['location'],$arr);
  43. if(isset($arr[1]))
  44. return $arr[1];
  45. }
  46. return null;
  47. }
  48. }