123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. ];
  16. protected $hidden = ['created_at', 'updated_at'];
  17. public function stockProducts()
  18. {
  19. return $this->hasMany(StockProduct::class, 'product_number', 'number');
  20. }
  21. public function purchaseDetails()
  22. {
  23. return $this->hasMany(PurchaseDetail::class, 'product_number', 'number');
  24. }
  25. public function saleDetails()
  26. {
  27. return $this->hasMany(SaleDetail::class, 'product_number', 'number');
  28. }
  29. public function scopeFilter($query, array $filters)
  30. {
  31. $query->when($filters['search'] ?? null, function ($query, $search) {
  32. $query->where(function ($query) use ($search) {
  33. $query->where('name', 'like', '%' . $search . '%')
  34. ->orWhere('number', 'like', '%' . $search . '%');
  35. });
  36. });
  37. }
  38. }