حمید محسنی
2 سال پیش توسط حمید محسنی مطرح شد
1 پاسخ

کیف پول در لاراول

دوستان و اساتید سلام و سال نو همتون مبارک باشه
آقا من یه کیف پول توی پروژه ایجاد کردم به چنتا مشکل برخوردم میخواستم راهنماییم کنید ممنونتون میشم
ببینید من یه جدول wallet و یه جدول payment دارم و اطلاعات کیف پول و تراکنشهارو توی جدول ولت ذخیره میکنم که بتونم تاریخچه تراکنش های کاربران رو پزارش بگیرم عکس زیر مایگریشن ولت هستش که یه توضیح میدم خدمتتون
1- من یه type دارم که نوع تراکنش رو نشون میده کاهش یا فزایش و یا انتقال بین کاربران
2- یه inventory دارم که قراره موجودی کاربر ثبت بشه توش و میخوام بر اساس اینکه type چه مدلی هست عملیات جمع تفریق روی inventory انجام بشه و ذحیره بشه
 تصویر
چالش ها:
مورد اول اینکه من با توجه به این رابطه ای یک به چندی که با یوزر دارم چطور میتونم توی ویو موجودی مربوط به کاربر نشون بدم (میدونم پیش پا افتادست سوالم ولی هرچی فکر ردم یادم نیومد :) )
مورد بعدی اینکه عملیات جمع و تفریق رو چطور توی کنترلر پیاده سازی کنم بهتره خودم نظرم اینه که فیلد inventory رو بریزم توی متغیر و بعد یه شرط بزارم براساس type ریکوئستی که اومده و بعد جمع یا تفریق رو انجام بدم و بعد جواب نهایی رو بریزم توی inventory (اگر نظر بهتری درید منون میشم راهنمایی کنید)
مورد آخر بحث انتقال موجودی بین کاربران رو چطور هندل کنم؟
ببینید واضحتر توضیح میدم سوال آخرم رو من از طریق شماره موبایل که توی جدول کاربران یونیک هست کاربر رو پیدا کنم ولی چطور به دوتا سطر توی جدول ولت ایجاد کنم که یکیش مال کاربر انتقال دهنده باشه و یکیش مال کاربر انتقال گیرنده که بعد توی گزارش گیری به مشکل بر نخورم

لطفا تقاضایی که دارم توضیحتون واضح و کامل باشه من تازه لاراولی شدم :)


ثبت پرسش جدید
میلاد
تخصص : برنامه نویس
@miladmahaki 2 سال پیش آپدیت شد
0

سلام
مورد اول که یه رابطه یک به چند توی مدل user و wallet ایجاد کن این شکلی
توی مدل user:

public function wallets(){  
return $this->hasMany(Wallet::class);  
}

و توی مدل wallet هم به این صورت

public function user(){  
return $this->belongsTo(User::class);  
}

بعد برای گزارش گیری هرکاربر به این صورت:

$user = User::find(1);  
$user->wallets;

که حالا با یه where میتونی فیلتر کنی چیزی که میخوای رو
مورد دوم هم که جمع و تفریق رو اصلا لازم نیست توی inventory ذخیره کنی بجاش میتونی از sum استفاده کنی
مثلا:

$user->wallets->sum('price');

یا مثلا:

    $user->wallets->sum('price')->where('type', 'increase');

یا حتی با استفاده از sql مستقیم شرط هات رو لحاظ کنی

و برای مورد سوم هم میتونی توی همون فیلد description ذخیریه کنی که برای کی فرستاده پول رو
تمام


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام