لفرض أننا نريد عرض عدد طلبات الشراء ( عمليات الدفع )، التي تمت على code معين.
قبل البدء في التعامل مع Filament فإننا نحتاج لإنشاء Payment Model مع migration لتسجيل عمليات الدفع
php artisan make:model Payment -m
public function up(): void
{
Schema::create('payments', function (Blueprint $table) {
$table->id();
$table->foreignId('product_id')->constrained();
$table->foreignId('user_id')->constrained();
$table->foreignId('voucher_id')->nullable()->constrained();
$table->integer('subtotal');
$table->integer('taxes');
$table->integer('total');
$table->timestamps();
});
}
كذلك نحتاج لتحديد العلاقه بين Voucher Model و Payment Model وهي hasMany
class Voucher extends Model
{
use HasFactory;
protected $fillable = ['code','product_id','discount_percent'];
public function product() : BelongsTo
{
return $this->belongsTo(Product::class);
}
public function payments() : HasMany
{
return $this->hasMany(Payment::class);
}
}الأن بعد أن إنتهينا من إعدادات الـ Model ، نذهب لملف VoucherResource ونضيف الحقل count
public static function table(Table $table): Table
{
return $table
->columns([
Tables\Columns\TextColumn::make('code')->label('Voucher Code'),
Tables\Columns\TextColumn::make('discount_percentage')->label('Discount (%)'),
Tables\Columns\TextColumn::make('product.name')->label('Name Of Product'),
Tables\Columns\TextColumn::make('payments_count')
->label('Times Used')
->counts('payments'),
])
->filters([
//
])
->actions([
Tables\Actions\EditAction::make(),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
]),
]);
}كما نلاحظ أنه في count تم تحديد العلاقه بين الـ Payment Model , Voucher Model