| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 | 
							- <?php
 
- namespace App\Shop\Orders;
 
- use App\Shop\Addresses\Address;
 
- use App\Shop\Couriers\Courier;
 
- use App\Shop\Customers\Customer;
 
- use App\Shop\OrderStatuses\OrderStatus;
 
- use App\Shop\Products\Product;
 
- use Illuminate\Database\Eloquent\Model;
 
- use Nicolaslopezj\Searchable\SearchableTrait;
 
- class Order extends Model
 
- {
 
-     use SearchableTrait;
 
-     /**
 
-      * Searchable rules.
 
-      *
 
-      * Columns and their priority in search results.
 
-      * Columns with higher values are more important.
 
-      * Columns with equal values have equal importance.
 
-      *
 
-      * @var array
 
-      */
 
-     protected $searchable = [
 
-         'columns' => [
 
-             'customers.name' => 10,
 
-             'orders.reference' => 8,
 
-             'products.name' => 5
 
-         ],
 
-         'joins' => [
 
-             'customers' => ['customers.id', 'orders.customer_id'],
 
-             'order_product' => ['orders.id', 'order_product.order_id'],
 
-             'products' => ['products.id', 'order_product.product_id'],
 
-         ],
 
-         'groupBy' => ['orders.id']
 
-     ];
 
-     /**
 
-      * The attributes that are mass assignable.
 
-      *
 
-      * @var array
 
-      */
 
-     protected $fillable = [
 
-         'reference',
 
-         'courier_id', // @deprecated
 
-         'courier',
 
-         'customer_id',
 
-         'address_id',
 
-         'order_status_id',
 
-         'payment',
 
-         'discounts',
 
-         'total_products',
 
-         'total',
 
-         'tax',
 
-         'total_paid',
 
-         'invoice',
 
-         'label_url',
 
-         'tracking_number',
 
-         'total_shipping'
 
-     ];
 
-     /**
 
-      * The attributes that should be hidden for arrays.
 
-      *
 
-      * @var array
 
-      */
 
-     protected $hidden = [];
 
-     /**
 
-      * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
 
-      */
 
-     public function products()
 
-     {
 
-         return $this->belongsToMany(Product::class)
 
-                     ->withPivot([
 
-                         'quantity',
 
-                         'product_name',
 
-                         'product_sku',
 
-                         'product_description',
 
-                         'product_price',
 
-                         'product_attribute_id'
 
-                     ]);
 
-     }
 
-     /**
 
-      * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
 
-      */
 
-     public function customer()
 
-     {
 
-         return $this->belongsTo(Customer::class);
 
-     }
 
-     /**
 
-      * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
 
-      */
 
-     public function courier()
 
-     {
 
-         return $this->belongsTo(Courier::class);
 
-     }
 
-     /**
 
-      * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
 
-      */
 
-     public function address()
 
-     {
 
-         return $this->belongsTo(Address::class);
 
-     }
 
-     /**
 
-      * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
 
-      */
 
-     public function orderStatus()
 
-     {
 
-         return $this->belongsTo(OrderStatus::class);
 
-     }
 
-     /**
 
-      * @param string $term
 
-      *
 
-      * @return mixed
 
-      */
 
-     public function searchForOrder(string $term)
 
-     {
 
-         return self::search($term);
 
-     }
 
- }
 
 
  |