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

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

Paradox

کاربر
  • تعداد ارسال ها

    112
  • تاریخ عضویت

  • آخرین بازدید

  • Days Won

    1

پست ارسال شده توسط Paradox


  1. سلام وقت بخیر من میخام هر کاربر موقع ثبت نام یک کد دعوت اختصاصی داشته باشه که اگه هر شخصی از کد دعوت استفاده کرد مثلا 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();

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


  2. الان به این شکل که نوشتم برای نمایش دکمه ها

        if(res.status)
                        {
                            $('#enable_region').hide();
                            $('#disable_region').show();
                        }else{
                            $('#enable_region').show();
                            $('#disable_region').hide();
                        }

    چه مناطق فعال باشه چه غیرفعال دکمه فعال رو نمایش میده بعد از انتخاب منطقه 

    این متد برای نمایش منطقه مشکلی نداره ؟

        public function fetchRegion(Request $request)
        {
             $data['regions'] = Region::where("city_id", $request->city_id)->get();
              
            return response()->json($data);
        }

     


  3. پس الان فعال یا غیرفعال بودن status رو دیگه نباید با لاراول ارسال کنم درسته ؟

    با جیکوئری انجام بدم ؟

    یعنی اون متد submitLocation  رو نیازی بهش نیست ؟

    توسط این متد 

    manage_region_status 

    باید status رو با جیکوئری صفر یا یک کنم ؟

     

    من قبلا به این شکل انجام میدادم تو لاراول

    if ($region->status == 1) {
                $region->status = 0;
            } else {
                $region->status = 1;
            }
    
            $region->save();

    تو جیکوئری نمیدونم به چه شکل میشه اینکارو کرد 


  4. به این شکل که نوشتم وقتی dd میگیرم کل مشخصات کاربری که فیلتر کردم میاره ولی در حالت عادی هیچ کاربری رو نمایش نمیده 

     $users = User::where('status', true);
    
            if ($request->has('age_difference')) {
                $users->where('age_difference', '=', $request->age_difference);
            }
    
            if ($request->has('time')) {
                $users->where('time', '=' , $request->time);
            }
    
            if ($request->has('disability')) {
                $users->where('disability', '=' , $request->disability);
            }
    
            if ($request->has('name')) {
                $users->where(function ($query) use ($request) {
                    $query->whereHas('cities', function ($query) use ($request) {
                        $query->where('name', 'like', $request->name);
                    });
                });
            }
            // dd($users->get());

     


  5. در 13 ساعت قبل، saber گفته است :

    الان مشکلتون این هست که چطوری دکمه های فعال یا غیرفعال رو نمایش بدید؟ چون میخواید بطور کلی مناطق رو فعال یا غیرفعال کنید و مثلا انتخاب یک یا چند منطقه ندارید کار راحتتری هست میتونید موقعی که لیست مناطق رو دریافت میکنید فیلد status رو هم بگیرید و براساس اون توی response بخش ایجکس هر کدوم از دکمه های فعال یا غیرفعال رو نمایش بدید و موقعی که روی دکمه مورد نظر کلیک شد عمل فعال یا غیرفعاسازی رو انجام بدید.

    بله تو ایجکس مشکلم اینه چطوری دکمه فعال و غیرفعال status رو نمایش بدم و روش کلیک شد قابلیت فعال و غیرفعال اعمال بشه

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


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

    Call to undefined method App\Models\User::cities()
    

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

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


  7. سلام وقت بخیر من میخام جستجو بر اساس فیلتر ایجاد کنم
    برای دو جدول کابران و جدول شهر ( که اینجا از روش چند به چند استفاده کردم و تو جدول منطقه user_id قرار داره اینجا مشکلی برای جستجو وجود نداره؟)
    برای جدول کاربران فیلدهایی که میخام فیلتر بشه از enum استفاده کردم (3 تا مقدار اول enum هستن )  اینجا به چه شکل باید تعریف کنم؟ تو این حالت فقط تو url نمایش میده و کاربر رو پیدا نمیکنه

           $user_query = User::query();
             $city_query = City::query();
     
             if($keyword = $request->get('search')){
     
                 $user_query->where('age_difference' , '=' , "{$keyword}")->where('time' , '=' , "{$keyword}")->where('disability' , '=' , "{$keyword}")->orWhereHas('cities' , function ($query) use ($keyword){
                     $query->where('name', 'like', "%{$keyword}%")->get();
                 });
     
             } 

     


  8. سلام وقت بخیر من میخام یه بخش تو پنل مدیریت ، قابلیت فعال و غیرفعال کردن منطقه ها رو اضافه کنم
    از طریق ایجکس استان و شهر و منطقه رو نمایش میدم
    حالا میخام اگه مثلا شهر تهران انتخاب شد تمام منطقه های مربوط به شهر تهران رو تو دیتابیس غیرفعال کنم یا بالعکس اگه غیرفعال هست بتونم فعال کنم ( میخوام یکجا تمام مناطق باهم فعال و غیرفعال بشن)

    نمیدونم از طریق ایجکس انجام بدم یا تو کنترلر این بخش گیر کردم


    برای اینکار یه فیلد به جدول منطقه اضافه کردم

                $table->tinyInteger('status')->default(1);

     

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

    11_0ky.png

     

    روت ها

        Route::get('/locations' , [AdminController::class , 'showLocation'])->name('locations');
        Route::post('/locations/fetch-cities' , [AdminController::class , 'fetchCity']);
        Route::post('/locations/fetch-regions' , [AdminController::class , 'fetchRegion']);
        Route::post('/locations' , [AdminController::class , 'submitLocation'])->name('send.locations');
    
        Route::get('locations/status/{location}', [AdminController::class ,'updatestatus'])->name('location.status');

     

    کنترلر

     public function fetchRegion(Request $request)
        {
            // $data['regions'] = Region::where("city_id", $request->city_id)
            // ->get();
    
            $data['regions'] = Region::where("city_id", $request->city_id)->whereStatus(1)
            ->get();
              
            return response()->json($data);
        }
    
        public function submitLocation(Request $request , Region $region)
        {
            $request->validate([
                'province' => 'required',
                'city' => 'required',
                'region' => '',
                'status' => ''
            ]);
            
            if (Region::where('city_id', $request->city)->count() > 0)
            {
                if ($request->region[0] == 'all') {
    
                    $region = Region::where('city_id', $request->city)->get();
                    // auth()->user()->regions()->sync($region);
    
                    $region = Region::updated([
                        'status' => 0
                    ]);
    
                } else {
    
                    $region = Region::findOrFail($request->region);
                    auth()->user()->regions()->sync($region);
                }
    
            } else {
                return redirect(route('locations'));
            }
    
            return redirect(route('locations'));
            
        }

    فرم بلید

       <form method="POST" action="{{ route('send.locations') }}">
                                @csrf
                                <div class="form-group">
                                    <div class="col-8 m-auto mt-3 mb-3">
                                        <select id="province-dropdown" name="province" class="form-select @error('province') is-invalid @enderror">
                                            <option class="d-none">استان</option>
                                                @foreach ($provinces as $province)
                                                    <option value="{{ $province->id }}">{{ $province->name }}</option>
                                                @endforeach
                                        </select>
                                        @error('province')
                                        <span class="invalid-feedback" role="alert">
                                            <strong>{{ $message }}</strong>
                                        </span>
                                        @enderror
                
                                    </div>
                                </div>
                
                                <div class="form-group">
                                    <div class="col-8 m-auto mt-3 mb-3">
                                        <select id="city-dropdown" name="city" class="form-select @error('city') is-invalid @enderror">
                                            <option class="d-none disabled">شهر</option>
                                        </select>
                                        @error('city')
                                        <span class="invalid-feedback" role="alert">
                                            <strong>{{ $message }}</strong>
                                        </span>
                                        @enderror
                                    </div>
                                </div>
                
                                <div class="form-group">
                                    <div class="col-8 m-auto mt-3 mb-5">
                                        <select id="region-dropdown" name="region" class="form-select select @error('region') is-invalid @enderror">
                                            <option class="d-none">منطقه</option>
                                        </select>
                                        @error('region')
                                        <span class="invalid-feedback" role="alert">
                                            <strong>{{ $message }}</strong>
                                        </span>
                                        @enderror
                                    </div>
                                </div>
                                
                                <div class="button mt-5 text-center">
                                    <button type="submit" class="btn btn-info">ثبت</button>
                                </div>
                
                                
                            </form>

    کدهای ایجکس

     $(document).ready(function () {
    
            $('#province-dropdown').on('change', function () {
                var idProvince = this.value;
                $("#city-dropdown").html('');
                $.ajax({
                    url: "{{url('admin/locations/fetch-cities')}}",
                    type: "POST",
                    data: {
                        province_id: idProvince,
                        _token: '{{csrf_token()}}'
                    },
                    dataType: 'json',
                    success: function (result) {
                        $('#city-dropdown').html('<option value=""> انتخاب شهر </option>');
                        $.each(result.cities, function (key, value) {
                            $("#city-dropdown").append('<option value="' + value
                                .id + '">' + value.name + '</option>');
                        });
                        $('#region-dropdown').html('<option value="">انتخاب منطقه</option>');
                    }
                });
            });
    
            $('#city-dropdown').on('change', function () {
                var idCity = this.value;
                $("#region-dropdown").html('');
                $.ajax({
                    url: "{{url('admin/locations/fetch-regions')}}",
                    type: "POST",
                    data: {
                        city_id: idCity,
                        _token: '{{csrf_token()}}'
                    },
                    dataType: 'json',
                    success: function (res) {
                        $('#region-dropdown').html('<option value="all">تمام مناطق</option>');

     


  9. یه فیلد جدید اضافه کردم تو دیتابیس 

                $table->boolean('favorite')->default(0);

    حالا شرط بر این اساس هم میخام بزارم نتونستم جواب بگیرم 

    تو مدل favorite اضافه کردم

     public function isFavorite()
        {
            return $this->favorite ?? false;
        }

    شرط تو بلید

                            @if (Auth::user()->isFavorite)
    
    یا این
    
                            @if (Auth::user()->isFavorite == 1)

    نتونستم جواب بگیرم


  10. اینجا دارم کل کاربران رو نمایش میدم توی لیست بلید ، فورایچی که برای نمایش تمام کاربران سایت زدم برای این روت هم بر اساس ایدی کاربران گفتم لایک انجام بشه

    اشتباهه مگه ؟ یا من اشتباه متوجه شدم؟

    <a href="{{ route('people.favorite' , $user->id ) }}">
      <i class="fa fa-star text-black"></i>
    </a>

    الان تست گرفتم کار میکنه هم لایک هم انلایک ممنونم 

    و اینکه روت get گذاشتم مشکلی که پیش نمیاد ؟بهتره از post استفاده کنم؟

    و اینکه چطوری تو بلید میتونم شرط بزارم که اگه لایک شد ایکون انلایک نشون بده ؟ هر شرطی میزارم فقط یکیش نشون میده 

     @if ()
                            
    <a href="{{ route('people.favorite' , $user->id ) }}">
      <i class="fa fa-star text-black"></i>
    </a>
    
    @else
    
    <a href="{{ route('people.unFavorite' , $user->id ) }}" >
      <i class="fa fa-star text-warning"></i>
    </a>
    
    @endif

     

     


  11. جدول

    Schema::create('favorites', function (Blueprint $table) {
                $table->bigIncrements('id');
                $table->foreignId('user_id')->constrained()->onDelete('cascade');
                $table->foreignId('favorite_user_id')->constrained('users','id')->onDelete('cascade');
                $table->timestamp('added_date')->default(DB::raw('CURRENT_TIMESTAMP'));
            });

     

    مدل favorite

      public $timestamps = false;
    
        protected $fillable = [
           'user_id', 'favorite_user_id', 'added_date'
        ];
    
        public function user()
        {
           return $this->belongsTo(User::class);
        }

     

    مدل user

      public function favorites()
        {
           return $this->hasMany(Favorite::class);
        }

     

    route

       Route::get('/profile/favorite/{favorite}' , [IndexController::class , 'favorite'])->name('favorite');
        Route::get('/profile/unfavorite/{favorite}' , [IndexController::class , 'unFavorite'])->name('unFavorite');

     

    blade

      <a href="{{ route('favorite' , $user->id ) }}">
        <i class="fa fa-star text-black"></i>
    </a>
    
    <a href="{{ route('unFavorite' , $user->id ) }}" >
      <i class="fa fa-star text-warning"></i>
    </a>

     

    controller

      public function favorite($favorite)
        {
            // $favorite_user_id = Favorite::find($user); 
    
            // dd($favorite_user_id);
            // Favorite::create([
            //     'favorite' => 1 ,
            //     'user_id' => $user->id,
            //     'favorite_user_id' => $favorite_user_id, 
    
            // ]);
    
            $favorite_user_id = Favorite::find($favorite); 
            Favorite::create([
                'user_id' => auth()->user()->id,
                'favorite_user_id' => $favorite_user_id, 
                'added_date' => Carbon::now()
            ]);
    
            // dd($favorite);
           return back();
        }
    
        public function unFavorite($favorite)
        {
        //    $favorite = Favorite::where('user_id' , $favorite->id)->first();
        //    $favorite->delete();
    
            $favorite_user_id = Favorite::find($favorite); 
            Favorite::where('user_id',auth()->user()->id)
                ->where('favorite_user_id',$favorite_user_id)
                ->delete();
            return back();
        }

     

    الان مشکل اینه وقتی روی دکمه مورد علاقه میزنم ارور زیر دارم

    SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'favorite_user_id' cannot be null
    INSERT INTO
      `favorites` (`user_id`, `favorite_user_id`, `added_date`)
    VALUES
      (5, ?, 2023 -02 -01 14: 08: 35)

     


  12. در در ۱۴۰۱/۱۱/۱۰ در 12:15، saber گفته است :

    خطا بخاطر این هست که favorite_user_id مقداری نفرستادید باید شناسه کاربری رو که میخواید توی لیست دلخواه قرار بگیره براش بفرستید. من با api اون مقدار رو با نام user_id براش ارسال کردم

    چطوری باید ایدی کاربری که لایک کرد رو ثبت کنم ؟اصلا ایدی که به روت میدم پیدا نمیکنه 


  13. ممنون مهندس بله من میخام فقط برای کاربران باشه 

    این چیزی که قرار دادید رو گذاشتم یه ارور دارم 

    SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'favorite_user_id' cannot be null

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


  14. این شکلی درسته ؟

    برای ایدی خودم فقط حذف کار میکنه 

        public function favorite(User $favorite)
        {
           Favorite::create([
            'favorite' => 1 ,
            'user_id' => $favorite->id,
           ]);
    
           return back();
        }
    
        public function unFavorite(Request $request , User $favorite)
        {
           $favorite = Favorite::where('user_id' , $favorite->id)->first();
    
           $favorite->delete();
           return back();
        }

     


  15. یکم تغییر دادم جدول رو به این شکل نوشتم

      $table->foreignId('user_id')->constrained()->cascadeOnDelete();
                $table->boolean('favorite')->default(0);

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

    مشکلی که دارم وقتی روی دکمه favorite کاربر مثلا ایدی 2 میزنم تو دیتابیس ثبت میشه ولی تو ظاهر بلید تغییری نمیکنه ولی وقتی روی دکمه favorite ایدی که خودم لاگین کردم میزنم هم تو دیتابیس ثبت میشه هم تو بلید ظاهرش تغییر میکنه

     

        public function favorite(User $favorite)
        {
           Favorite::create([
            'favorite' => 1 ,
            'user_id' => $favorite->id,
           ]);
    
           return back();
        }
    
        public function unFavorite(Request $request , User $favorite)
        {
            $deletd = Favorite::where('id', auth()->user()->id)->where('user_id' , $favorite->id)->update([
                'favorite' => 0
            ]);
    
        //    $favorite = Favorite::where('id' , $favorite->id)->where('user_id' , $favorite->id)->first();
    
        //    $favorite->delete();
           return back();
        }

     


  16. در در ۱۴۰۱/۱۱/۱ در 00:54، saber گفته است :

    یه مشکلی که دارید داخل متد is_favorite_by_auth_user شناسه کاربری رو که لاگین کرده با کد Auth::id دریافت میکنید و در داخل آرایه کاربران جستجو میزنید که این اشتباه هست

    شما باید لیست کاربران دلخواه کاربری رو که لاگین کرده دریافت کنید بعد باید چک کنید شناسه پروفایل کاربری که ازش بازدید میکنید در بین این شناسه ها وجود داره یا خیر

    مثلا به این شکل میشود:

    
    $login_user_favorites = [آرایه ای از کاربرانی که قبلا در لیست خود قرار داده];
    $user_id = شناسه کاربری که در حال بازدید پروفایلش هستید;
    return in_array($user_id,$login_user_favorites);

    در کد بالا اگر شناسه کاربری که از پروفایلش بازدید میکنیم در لیست کاربران دلخواه کاربر لاگین شده موجود باشه true برمیگرده در غیراینصورت false برمیگرده.
    در مورد این هم که بدون رفرش باشه حتما باید ajax کار کنید

    مهندس اینجا تو این تابع به چه شکل بنویسم دقیقا ؟ متاسفانه نتونستم حلش کنم

       public function is_favorite_by_auth_user()
        {
            $id = Auth::id();
            $favorites = array();
    
            foreach($this->favorites as $favorite):
    
                array_push($favorites , $favorite->user_id);
    
            endforeach;
    
            if(in_array($id , $favorites))
            {
                return true;
            }
            else
            {
                return false;
            }

     


  17. در 12 ساعت قبل، saber گفته است :

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

    بله جیکوئری لود شده

    این لاین به این شکل باید باشه ؟

    
        public function getIsUserFavoritesAttribute(User $user)
        {
            return $this->favorites()->where('user_id', $user->id)->exists();
        }

     


  18. در 22 ساعت قبل، Paradox گفته است :

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

     

    کنترلر

    
      public function store(User $user)
        {
            $user->favorites()->toggle(
                auth()->user()->id
            );
    
            return response(['ok'], 200);
        }

     

    روت

    
     Route::middleware('auth')->post('/profile/favorite/{user}', [IndexController::class, 'store'])->name('favorite');

     

    بلید

    
     <span class="single-page__favorite @if($user->is_user_favorite) single-page__favorite--is-active @endif"></span>

     

    اسکریپت

    
    <script>
        $(".single-page__favorite").on("click", function () {
              fetch('{{ route("favorite", $user->id) }}', {
                  method: 'post',
                  headers: {
                      'X-CSRF-Token': '{{ csrf_token() }}'
                  }
              }).then((response) => {
                  if(response.ok) {
                      $(this).toggleClass("single-page__favorite--is-active");
                  }
              })
              
          })
    </script>

     

    سی اس اس

    
    .single-page__favorite::before {
        content: '★';
        font-size: 25px;
        padding-bottom: 25px;
    }
    
    .single-page__favorite--is-active::before {
        content: '';
    }

     

    مدل یوزر

    
          public function favorites()
        {
           return $this->hasMany(Favorite::class);
        }
    
        public function getIsUserFavoritesAttribute()
        {
            return $this->favorites()->where('user_id', auth()->user()->id)->exists();
        }

     

    مدل favorite

    
        protected $fillable = [
            'user_id',
        ];
    
        public function user()
        {
           return $this->belongsTo(User::class);
        }

     

    اشکال کارم کجاست؟

    تو consol به این خط از جی اس ارور میده

    
              fetch('http://localhost:8000/profile/favorite/2', {

     

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


  19. به یه روش دیگه هم انجام دادم از طریق ایجکس ولی جواب نگرفتم 

     

    کنترلر

      public function store(User $user)
        {
            $user->favorites()->toggle(
                auth()->user()->id
            );
    
            return response(['ok'], 200);
        }

     

    روت

     Route::middleware('auth')->post('/profile/favorite/{user}', [IndexController::class, 'store'])->name('favorite');

     

    بلید

     <span class="single-page__favorite @if($user->is_user_favorite) single-page__favorite--is-active @endif"></span>

     

    اسکریپت

    <script>
        $(".single-page__favorite").on("click", function () {
              fetch('{{ route("favorite", $user->id) }}', {
                  method: 'post',
                  headers: {
                      'X-CSRF-Token': '{{ csrf_token() }}'
                  }
              }).then((response) => {
                  if(response.ok) {
                      $(this).toggleClass("single-page__favorite--is-active");
                  }
              })
              
          })
    </script>

     

    سی اس اس

    .single-page__favorite::before {
        content: '★';
        font-size: 25px;
        padding-bottom: 25px;
    }
    
    .single-page__favorite--is-active::before {
        content: '⭐';
    }

     

    مدل یوزر

          public function favorites()
        {
           return $this->hasMany(Favorite::class);
        }
    
        public function getIsUserFavoritesAttribute()
        {
            return $this->favorites()->where('user_id', auth()->user()->id)->exists();
        }

     

    مدل favorite

        protected $fillable = [
            'user_id',
        ];
    
        public function user()
        {
           return $this->belongsTo(User::class);
        }

     

    اشکال کارم کجاست؟

    تو consol به این خط از جی اس ارور میده

              fetch('http://localhost:8000/profile/favorite/2', {

     


  20. در 10 ساعت قبل، saber گفته است :

    معمولا برای اینکه آیتمی رو فعال یا غیرفعال کنن دو جا میشه اینکار رو انجام داد یکی در بخشی که خود آیتم ساخته شده از اونقسمت خیلی راحت میتونید یه فیلد وضعیت بذارید و فعال یا غیرفعال بودن رو انتخاب کنید تا موقع ذخیره اعمال بشه و یا در لیست مناطق که نمایش داده میشه میتونید مثلا فیلتر کنید و فقط مناطق تهران رو نمایش بدید و کنار هر منطقه یه چک باکس باشه که هر کدوم رو خواستید تیک بزنید و دو تا دکمه فعال و غیرفعال هم داشته باشید که روی هر کدوم کلیک شد مناطق انتخاب شده رو با ajax به api مورد نظر ارسال کنید و وضعیتش رو براساس کلیکی که روی دکمه فعال یا غیرفعال بوده آپدیت کنید.

    اگه توضیحات بیشتری نیاز داشتید بگید بیشتر راهنمایی کنم

    الان من تو جدول منطقه فیلد ststus گذاشتم به این شکل میشه فعال و غیرفعال کرد ؟ که مثلا استان تو پنل مدیریتی انتخاب کنم بعد شهر رو از طریق همون ایجکس اطلاعاتش بگیرم و  انتخاب کنم بعد انتخاب شهر برای منطقه گزینه فعال و غیرفعال فقط نمایش بده ؟؟

    اگه میشه اینجوری لطفا راهنمایی کنید به چه صورت هست ممنون


  21. در 23 ساعت قبل، saber گفته است :

    سلام
    منطق کار یکی هست و مهم نیست برای پست و مقاله بوده باشه روش کار یکیه از همونها میتونید الگو برداری کنید حالا جایی باز مشکلی داشتید میتونید مشکل رو مطرح کنید

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

    و unfavorite که میزنم ارور زیر دارم

    Call to a member function delete() on null
    

     

    جدول من

       Schema::create('favorites', function (Blueprint $table) {
                $table->id();
                $table->foreignId('user_id')->constrained()->cascadeOnDelete();
                $table->timestamps();
            });

    مدل favorite

    class Favorite extends Model
    {
        
        protected $fillable = [
            'user_id',
        ];
    
        public function user()
        {
           return $this->belongsTo(User::class);
        }
    
    }

     

    مدل user

       public function favorites()
        {
           return $this->hasMany(Favorite::class);
        }
    
        public function is_favorite_by_auth_user()
        {
            $id = Auth::id();
            $favorites = array();
    
            foreach($this->favorites as $favorite):
    
                array_push($favorites , $favorite->user_id);
    
            endforeach;
    
            if(in_array($id , $favorites))
            {
                return true;
            }
            else
            {
                return false;
            }

     

    route

        Route::get('/profile/favorite/{favorite}' , [IndexController::class , 'favorite'])->name('favorite');
        Route::get('/profile/unfavorite/{favorite}' , [IndexController::class , 'unFavorite'])->name('unFavorite');

     

    controller

        public function favorite(Request $request , User $favorite)
        {
           Favorite::create([
            'id' => $favorite->id ,
            'user_id' => Auth::id() ,
    
           ]);
    
           return back();
        }
    
        public function unFavorite(User $favorite)
        {
           $favorite = Favorite::where('id' , $favorite->id)->where('user_id' , Auth::id())->first();
           $favorite->delete();
           return back();
        }

     

    blade

     @if ($user->is_favorite_by_auth_user())
                            <a href="{{ route('profile.unFavorite' , $user->id ) }}" >
                                <i class="fa fa-star text-warning"></i>
                            </a>
                            @else
                            <a href="{{ route('profile.favorite' , $user->id ) }}">
                                <i class="fa fa-star text-black"></i>
                            </a>
    @endif

     

    مشکل کارم تو کنترلره ؟؟

    اگه بخوام بدون رفرش شدن صفحه انجام بدم از ajax باید استفاده کنم؟

     

×
×
  • جدید...