رفتن به مطلب
انجمن پشتیبانی لاراول ایران

هاست لاراول با پشتیبانی 24 ساعته و امکانات کامل از مدیرهاست

Recommended Posts

سلام وقت بخیر من میخام هر کاربر موقع ثبت نام یک کد دعوت اختصاصی داشته باشه که اگه هر شخصی از کد دعوت استفاده کرد مثلا 30 درصد تخفیف موقع خرید بهش اضافه بشه
و همینطور تو پروفایلش تعداد افرادی که کد دعوت استفاده کردن و تخفیفی که تعلق گرفت رو بشه نمایش داد
تو جدول users یه فیلد اضافه کردم به این اسم

            $table->unsignedInteger('invite_code')->unique();

و به این شکل نوشتم

           $user = User::create([
            'phone' => $data['phone'],
            'password' => Hash::make($data['password']),
            'reagent_code' => ['nullable' , 'max:255' , 'min:3'],
            'invite_code' => mt_rand(100000, 999999),
        ]);

 

کد ایجاد شد ایا این کار اشتباهه ؟

آیا نیازه یه جدول دیگه ایجاد کرد ؟
من یه فیلد هم دارم به این اسم

            $table->string('reagent_code')->nullable();

که کاربر موقع ثبت نام کد دعوت مورد نظر رو اینجا وارد کنه
بر اساس این فیلد باید تعداد دفعات رو نمایش بدم ؟و درصد رو اعمال کنم؟

Share this post


Link to post
Share on other sites

با همون ستونها میتونید کار کنید یکی برای معرفی افراد جدید هست دومی هم که برای این هست که مشخص بشه کاربر توسط چه کسی معرفی شده و طبق همون ستون reagent_code باید تعداد افرادی رو که معرفی کرده پیدا کنید

Share this post


Link to post
Share on other sites
در 33 دقیقه قبل، saber گفته است :

با همون ستونها میتونید کار کنید یکی برای معرفی افراد جدید هست دومی هم که برای این هست که مشخص بشه کاربر توسط چه کسی معرفی شده و طبق همون ستون reagent_code باید تعداد افرادی رو که معرفی کرده پیدا کنید

ممنونم پس با همین دو فیلدی که دارم میتونم انجام بدم 

از تابع count باید استفاده کرد؟

برای نمایش تمام کاربران خب میگیم مدل رو count کنه 

برای یک ایتم چطوری میشه تعداد رو محاسبه کرد که چند نفر استفاده کردن؟

Share this post


Link to post
Share on other sites
در 6 ساعت قبل، saber گفته است :

باید از where استفاده کنید و count رو بگیرید


$count = User::where('reagent_code', $user->invite_code)->count();

 

ممنون مهندس 

من اینکارو که کردم دفعه اول که از کد دعوت استفاده کردم عدد 2 رو نمایش داد تو خروجی

سه بار دیگه ثبت نام کردم با کد دعوت باز همون 2 رو که دفعه اول نمایش میداد رو نشون میده 

 

Share this post


Link to post
Share on other sites

اینکه تعداد 2 نوشته یکیش برای ثبت نام خودم یک تعداد ثبت شد

یعنی وقتی هر کاربر تو سایت ثبت نام میکنه تعداد 1 رو براش در نظر میگیره؟ باید قبل اینکه کسی کد وارد کرد 0 بزنه ولی چرا یک میزنه ؟

Share this post


Link to post
Share on other sites
در 16 ساعت قبل، saber گفته است :

دیتابیستون رو چک کنید ببینید اطلاعات چطوری ذخیره شدن احتمال داره اطلاعات درست توی دیتابیستون ذخیره نشده

زمانی که هر کاربر ثبت نام میکنه یک invite_code براش ثبت میشه تو دیتابیس

وقتی هم کاربر جدید invite_code کاربر دیگه رو وارد میکنه به درستی تو دیتابیس ذخیره میشه

اتفاقی که داره میفته به ازای هر ثبت نامی که انجام میشه یک invite_code که ثبت میشه برای تمامی کاربران رو جمع میکنه و تو پروفایل همه کاربران همین جمع کل رو نمایش میده 

Share this post


Link to post
Share on other sites

میزان درصدی که بدست میاد بابت هر ثبت نامی که از کد معرف استفاده میکنه رو به چه شکل میشه محاسبه کرد ؟

مثلا من یک بار استفاده کردم بگه 20 درصد دوبار 40 و  5 بار استفاده کردم 100 درصد

Share this post


Link to post
Share on other sites

من با سوییچ برای اینکه تو ویو نشون بده چنبار کاربر از کد استفاده کرد میزان تخفیف رو نوشتم

فقط یه سوال آیا این روشی که انجام میدم درسته ؟

نیازی نیست یه جدول جدا برای تخفیف ایجاد کنم درکل به جای اینکه تو جدول یوزر باشه؟

اگه یه جدول جداهم بزارم باز میشه کاری کرد موقع ثبت نام هر کاربر کد تخفیف رندوم براش ثبت بشه ؟

Share this post


Link to post
Share on other sites

توی پست اول گفتید هر کاربر که از کد معرف استفاده کنه مثلا 30 درصد تخفیف به کاربر معرف تعلق بگیره اگر اینطوری باشه و میخواید برای هر ثبت نام معرفی شده

یه کد تخفیف جنریت کنید میتونید یه جدول برای تخفیفها بسازید و وقتی کاربری با کد یه کاربر ثبت نام کرد تخفیف رو براش توی جدول تخفیفها ثبت کنید

این جدول هم میتونه ستونهای زیر رو داشته باشه:

discount_id

discount_user_id شناسه کاربری که تخفیف بهش تعلق گرفته

discount_code کد تخفیف ایجاد شده

discount_percent درصد تخفیف

discount_status وضعیت تخفیف که 0 یا 1 بگیره که پیشفرض 0 باشه و زمانی که از کد تخفیف استفاده شد به 1 تغییر بدید که مشخص باشه کدوم تخفیفها استفاده شده

created_at

updated_at

کلا تخفیف حالتهای مختلفی میتونه داشته باشه ولی با این روش به نظرم چیزی رو که میخواید میتونید پیاده سازی کنید.

Share this post


Link to post
Share on other sites

اره اول به این شکل گفتن الان ولی تغییر کرد !! بابت هر کاربری که از کد تخفیف استفاده میکنه درصدها متفاوت باشه ...

اگه 5 نفر استفاده کردن 50 درصد تخفیف اگه 10 نفر 100 درصد 

یا به این شکل 

یک بار استفاده شد بگه 20 درصد دوبار 40 و  5 بار استفاده کردم 100 درصد ...

پس باید این شرایط باید جدول جدا درست کرد

و اینکه درصدها رو بشه تغییر دادم باید کوئری زد فقط درسته ؟

 

Share this post


Link to post
Share on other sites

جدول به این شکل میشه ؟

        Schema::create('discounts', function (Blueprint $table) {
            $table->id();
            $table->foreignId('user_id')->constrained()->onDelete('cascade');
            $table->string('code');
            $table->integer('percent');
            $table->boolean('status')->default(0);
            $table->timestamps();
        });

حالا من برای مثلا جدول محصول بخوام باید این جدول رو هم داشته باشم ؟ یا مثل یوزر فقط یه فیلد product_id بزارم ؟

     Schema::create('discount_product', function (Blueprint $table) {

            $table->foreignId('product_id')->constrained()->onDelete('cascade');

            $table->foreignId('discount_id')->constrained()->onDelete('cascade');

            $table->primary(['discount_id' , 'product_id']);
        });

 

Share this post


Link to post
Share on other sites
در در ۱۴۰۱/۱۱/۲۸ در 12:26، Paradox گفته است :

اره اول به این شکل گفتن الان ولی تغییر کرد !! بابت هر کاربری که از کد تخفیف استفاده میکنه درصدها متفاوت باشه ...

اگه 5 نفر استفاده کردن 50 درصد تخفیف اگه 10 نفر 100 درصد 

یا به این شکل 

یک بار استفاده شد بگه 20 درصد دوبار 40 و  5 بار استفاده کردم 100 درصد ...

پس باید این شرایط باید جدول جدا درست کرد

و اینکه درصدها رو بشه تغییر دادم باید کوئری زد فقط درسته ؟

 

باید یه بخش تنظیمات داشته باشید و از طریق اون همیشه طبق نیازی که دارید تخفیف رو تعیین کنید مثلا در تنظیمات مشخص کنید تعداد معرف: x و میزان تخفیف y

بعد براساس تعداد معرفیهای کاربر و تنظیماتی که انجام دادید میتونید میزان تخفیف رو محاسبه کنید.

Share this post


Link to post
Share on other sites
در در ۱۴۰۱/۱۱/۲۸ در 12:48، Paradox گفته است :

جدول به این شکل میشه ؟


        Schema::create('discounts', function (Blueprint $table) {
            $table->id();
            $table->foreignId('user_id')->constrained()->onDelete('cascade');
            $table->string('code');
            $table->integer('percent');
            $table->boolean('status')->default(0);
            $table->timestamps();
        });

حالا من برای مثلا جدول محصول بخوام باید این جدول رو هم داشته باشم ؟ یا مثل یوزر فقط یه فیلد product_id بزارم ؟


     Schema::create('discount_product', function (Blueprint $table) {

            $table->foreignId('product_id')->constrained()->onDelete('cascade');

            $table->foreignId('discount_id')->constrained()->onDelete('cascade');

            $table->primary(['discount_id' , 'product_id']);
        });

 

اون جدولی که بهتون گفتم براساس اون سناریوی اولی بود که گفته بودید. الان میخواید بطور جداگانه برای هر محصولی تخفیف ایجاد کنید؟

یا میخواید کدهای تخفیف استفاده شده رو برای هر محصولی مشخص کنید؟

Share this post


Link to post
Share on other sites

نه نمیخام جدول تخفیف برای هر محصول ایجاد کنم ، میخوام کدهای تخفیف رو برای محصول مشخص کنم

میخام به ازای هر کاربرانی که معرفی میشه ازسمت یک شخص بهش کد تخفیف تعلق بگیره به این شکل 

اگه 5 نفر استفاده کردن 50 درصد تخفیف اگه 10 نفر 100 درصد اعمال بشه برای خرید 

مثلا من فقط یه بخش دارم تو سایت که کاربران باید اشتراک تهیه کنن تا بتونن استفاده کنن حالا میخام اگه کد تخفیف داشتن بتونن هزینه کمتر بدن با استفاده از کد تخفیف یا اگه مثلا 10 نفر رو معرفی کرد به ازای اون تخفیف بتونه رایگان از اون اشتراک استفاده کنه

 

Share this post


Link to post
Share on other sites

وارد این گفتگو شوید

میتوانید پیام خود را ارسال کنید و بعد ثبت نام نمایید. در صورتی که حساب کاربری دارید, هم اکنون وارد شوید و در این گفتگو شرکت کنید.

مهمان
پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  Only 75 emoji are allowed.

×   لینک شما به صورت اتوماتیک جایگذاری شد.   نمایش به عنوان یک لینک به جای

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • جدید...