لفرض أننا نريد عرض عدد طلبات الشراء ( عمليات الدفع )، التي تمت على 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