جشنواره عیدانه راکت | عضویت ویژه راکت برای آخرین بار | افزایش قیمت‌ها از سال جدید | و ...

مشاهده اطلاعات بیشتر...
ثانیه
دقیقه
ساعت
روز
مانی
2 سال پیش توسط مانی مطرح شد
2 پاسخ

کوئری whereRelation برای آرایه

سلام دوستان
یه جدول userMeta به عنوان relationships برای جدول User اضافه شده
تو ستون state آرایه ذخیره میشه، مقادیرش فارسی هست که به صورت زیر ذخیره میشه

["\u0627\u0633\u0627\u0644\u0645","\u0627\u0633\u0643\u0644\u06a9","\u0627\u0633\u0644\u0627\u0645 \u0622\u0628\u0627\u062f","\u0627\u0645\u0644\u0634","\u067e\u0627\u0634\u0627\u0643\u06cc","\u0686\u0627\u067e\u0627\u0631\u062e\u0627\u0646\u0647"]

ولی وقتی کوثری where میزنی هیچی برنمیگردونه، از دو روش زیر استفاده شده که چیزی برنگردوند!

        $user = User::latest()
            ->with('userMeta')
            ->where('name', 'LIKE', "%{$this->name}%")
            //1
            ->whereRelation('userMeta','state' ,'LIKE' , "%{$this->state}%")
            //2
            ->with(["userMeta" => function($q){
                $q->whereIn('state' ,[$this->state]);
            }])
            ->paginate(10);

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


ثبت پرسش جدید
مانی
@manisedaghat51 2 سال پیش مطرح شد
0

ممنون دوستان
حل شد با استفاده از whereJsonContains
https://stackoverflow.com/questions/41942374/json-search-in-laravel-eloquent

  $user = User::latest()
            ->with('userMeta')
            ->where('name', 'LIKE', "%{$this->name}%")

            ->whereHas('userMeta', function ($q){
                $q->whereJsonContains('state',[$this->state]);
            })

            ->paginate(10);

حسن حکمتی
تخصص : برنامه نویس وب و بلاکچین
@hekmati 2 سال پیش مطرح شد
0

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

$user = User::latest()->paginate(10);

مانی
@manisedaghat51 2 سال پیش مطرح شد
0

ممنون دوستان
حل شد با استفاده از whereJsonContains
https://stackoverflow.com/questions/41942374/json-search-in-laravel-eloquent

  $user = User::latest()
            ->with('userMeta')
            ->where('name', 'LIKE', "%{$this->name}%")

            ->whereHas('userMeta', function ($q){
                $q->whereJsonContains('state',[$this->state]);
            })

            ->paginate(10);

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

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