Product.php 1.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. namespace App\Models;
  3. use App\Models\PurchaseDetail;
  4. use App\Models\SaleDetail;
  5. use App\Models\StockProduct;
  6. use Illuminate\Database\Eloquent\Factories\HasFactory;
  7. use Illuminate\Database\Eloquent\Model;
  8. class Product extends Model
  9. {
  10. use HasFactory;
  11. protected $fillable = [
  12. 'number',
  13. 'name',
  14. 'unit',
  15. 'profit'
  16. ];
  17. protected $hidden = ['created_at', 'updated_at'];
  18. public function stockProducts()
  19. {
  20. return $this->hasMany(StockProduct::class, 'product_number', 'number');
  21. }
  22. public function purchaseDetails()
  23. {
  24. return $this->hasMany(PurchaseDetail::class, 'product_number', 'number');
  25. }
  26. public function saleDetails()
  27. {
  28. return $this->hasMany(SaleDetail::class, 'product_number', 'number');
  29. }
  30. public function scopeFilter($query, array $filters)
  31. {
  32. $query->when($filters['search'] ?? null, function ($query, $search) {
  33. $query->where(function ($query) use ($search) {
  34. $query->where('name', 'like', '%' . $search . '%')
  35. ->orWhere('number', 'like', '%' . $search . '%');
  36. });
  37. });
  38. }
  39. }