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);
- }
- }
|