راکت

اضافه کردن یک کاربر جدید با ایمیل تکراری زمانی که به شکل soft حذف شده

14 پاسخ

سلام
خسته نباشید و روزتون بخیر
من میخوام یه کاربر جدید با ایمیل کاربری که قبلا با متد soft deleteحذف شده.ایجاد کنم ولی مدام ارور میده این ایمیل از قبل وجود داره
طبیعی هم هست دیگه
چون کاربر از دیتابیس حذف نمیشه
ممنون میشم راهنماییم کنید

ثبت پرسش جدید

پاسخ‌ها

14
رضا پارسیان
رضا پارسیان
@Rp76

تخصص: توسعه دهنده Php , Laravel

سلام وقتتون بخیر!

الان میخواید کاربر رو حذف کنید؟

من ترجیح میدم که کاربر رو دوباره فعال کنم اگر بود و حذف شده بود با soft delete

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

سلام از این rule استفاده کنید.

Rule::unique('users')->whereNull('deleted_at')

@a.ghaderi1375

شاید پاسخ شما همین‌جا باشد

مشکات
مشکات
@meshkat315

تخصص: کاراموز

//Restoring a Soft Deleted record
    public function restore($id)
    {
        User::withTrashed()->find($id)->restore();
        alert()->success('عملیات با موفقیت انجام شد.' , 'Message')->persistent('Ok');
        return back();
    }

@Rp76

سلام آقای پارسیان
من با این کد میتونم کاربری رو که با soft deleteحذف کردم دوباره برگردونمش
اما الان میخوام بدون اینکه کاربر حذف شده رو restoreکنم بتونم با همون ایمیل کاربر حذف شده یک کاربر جدید بسازم

مشکات
مشکات
@meshkat315

تخصص: کاراموز

@websaz
سلام بزرگوار
ممنونم از راهنماییتون
الان امتحانش میکنم

مشکات
مشکات
@meshkat315

تخصص: کاراموز

@websaz

 public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')->unique('email')->whereNull('deleted_at');
            $table->boolean('is_superuser')->default(0);
            $table->boolean('is_staff')->default(0);
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->boolean('is_disable')->default(0);
            $table->rememberToken();
            $table->timestamps();
        });

کدی که گفتین رو اضافه کردم ولی اجرا نشد و بازم گفت ایمیل تکراریه

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

نه به این صورت در function store هنگام validate یا در request.
@a.ghaderi1375

مشکات
مشکات
@meshkat315

تخصص: کاراموز

        $data = $request->validate([
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255',Rule::unique('email')->whereNull('deleted_at')],
            'password' => ['required', 'string', 'min:8', 'confirmed'],
        ]);

@websaz
حتی با این هم اجرا نشد😥

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

سلام شما اشتباه نوشتید.

        $data = $request->validate([
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255',Rule::unique('users'/* در اینجا نام table قرار می گیرد */)->whereNull('deleted_at')],
            'password' => ['required', 'string', 'min:8', 'confirmed'],
        ]);

@a.ghaderi1375

مشکات
مشکات
@meshkat315

تخصص: کاراموز

@websaz
باز هم اجرا نشد
نمیدونم مشکل کجاست

مشکات
مشکات
@meshkat315

تخصص: کاراموز

   protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:8', 'confirmed'],

        ]);
    }

@websaz

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

مشکات
مشکات
@meshkat315

تخصص: کاراموز

   protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', Rule::unique('users')->whereNull('deleted_at')],
            'password' => ['required', 'string', 'min:8', 'confirmed'],

        ]);
    }

اینطوری توی کنترلر registerقرارش دادم ولی این ارور رو دارمتوضیح تصویر رو وارد کنید

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

در migration یونیک را بردارید و فقط در validation چک کنید.
@a.ghaderi1375

مشکات
مشکات
@meshkat315

تخصص: کاراموز

    public function store(Request $request)
    {
       $data = $request->validate([
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', Rule::unique('users')->whereNull('deleted_at')],
            'password' => ['required', 'string', 'min:8', 'confirmed'],

        ]);

این قسمت مربوط به ولیدیشن

  public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email');
            $table->boolean('is_superuser')->default(0);
            $table->boolean('is_staff')->default(0);
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->boolean('is_disable')->default(0);
            $table->rememberToken();
            $table->timestamps();
        });

اینم مربوط ب مایگریشن

اجرا نشد بازم بزرگوار@websaz

رضا پارسیان
رضا پارسیان
@Rp76

تخصص: توسعه دهنده Php , Laravel

این کار اشتباهی هست به کل

اگر هم موفق به اضافه کردن بشید
نمیتونید login کنید

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

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