راکت
حل شده

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

2 پاسخ

سلام دوستان
یه جدول 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);

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

ثبت پرسش جدید

پاسخ‌ها

2
مانی
مانی
@manisedaghat51
بهترین پاسخ

ممنون دوستان
حل شد با استفاده از 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

تخصص: برنامه نویس وب و بلاکچین

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

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

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

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

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