self::STATUS_WAIT, 'on_the_way' => self::STATUS_ONTHEWAY, 'distribute' => self::STATUS_DISTRIBUTE, 'check' => self::STATUS_CHECK, 'refund' => self::STATUS_REFUND, 'refuse' => self::STATUS_REFUSE, 'questions'=> self::STATUS_QUESTION, ]; protected $attributes = [ 'status' => self::STATUS_WAIT, 'is_failed'=> false, ]; protected $casts = [ 'checked_at' => 'datetime', 'is_failed' => 'bool', ]; protected $fillable = [ 'remarks', 'status', 'is_failed', 'checked_at', 'last_news', ]; /** * 未签收的包裹 */ public function scopeUnchecked($query) { return $query->whereNotIn('status', [static::STATUS_CHECK, static::STATUS_AUTOCHECK]); } /** * 订单 */ public function order() { return $this->belongsTo(Order::class, 'order_id'); } /** * 货运单商品 * */ public function packageProducts() { return $this->hasMany(OrderPackageProduct::class, 'order_package_id'); } /** * 关联的订单商品 * */ public function orderProducts() { return $this->belongsToMany(OrderProduct::class, 'order_package_products', 'order_package_id', 'order_product_id'); } /** * 属于此货运单单的标签 */ public function tags() { return $this->belongsToMany(Tag::class, 'taggables', 'taggable_id', 'tag_id')->wherePivot('taggable_type', self::class)->withTimestamps(); } /** * 确认此包裹是否已签收 * * @return bool */ public function isChecked() { return in_array($this->status, [static::STATUS_CHECK, static::STATUS_AUTOCHECK]); } }