یاسر مختاری
6 سال پیش توسط یاسر مختاری مطرح شد
12 پاسخ

ساخت جستجو در چند جدول

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


ثبت پرسش جدید
ابوالفضل ویسی
تخصص : برنامه نویس بک اند و فرانت اند
@vaysi 6 سال پیش مطرح شد
1

سلام خسته نباشید .
فک نکنم کار سختی باشه براتون . کافیه در کنترلر مربوطه مدل های مورد نظرتون رو با شرط های مورد نظرتون صدا بزنید .
و بعد نتیجه هر مدل رو به صورت یک آرایه برگردونید و در آخر با استفاده از تابع array_merge نتایج رو ادغام کنید و به ویو مورد نظر ارسال کنید .
اگر هم مدل هاتون فیلد های مشترکی ندارن میتونید یک ارایه خالی دیگر بسازید با یک سری فیلد های واحد و با استفاده از تابع یا یک حلقه مقادیر هر مدل را در آرایه مورد نظر بریزید و در آخر آرایه رو برگشت بدید .
نمونه :‌

$first = Model1::whereName($key)->get()->toArray();
$second = Model2::whereTitle($key)->get()->toArray();
$third = Model3::whereBody($key)->get()->toArray();
$res = array_merge($first,$second,$third);

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


یاسر مختاری
@yasermk1818 6 سال پیش مطرح شد
0

سلام مرسی از راهنماییینون اقا ابوالفضل ،خیلی ساده و کاربردی بود!!واقعا تشکر


محمد فولادگر
تخصص : Back-End Web Developer
@fouladgardev 6 سال پیش آپدیت شد
1

با سلام
@yasermk1818
@vaysi
شما حتی میتونید شرطهای هر مدل را به عنوان یک فیلتر در نظر بگیرید.
این باعث میشه در کنترلر بجای چک کردن شرط های زیاد از فیلترهای هر مدل بر اساس پارامترها استفاده کنید.

به این پکیج یه نگاهی کنید.کارتونا حل میکنه:

https://github.com/mohammad-fouladgar/eloquent-builder


محمد رضا اجلالی
@mredeveloper 6 سال پیش مطرح شد
1

@fouladgar_dev
سلام وقتتون بخیر.بنده الان در حال خاندن مقاله انگلیسی شما بودم. و واقعا لذت بردم.
بنده پکیج رو نصب کردم و کلاس filter رو هم در App/EloquentFilters/User/NameFilter
اما زمانی که به صورت get -> name=mohamad رو براش میفرستم مینویسه Filter not found.
ممنون میشم راهنمایی کنید.


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 6 سال پیش مطرح شد
0

آفرین چه پیکج های خوبی نوشتی @fouladgar_dev


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 6 سال پیش مطرح شد
0

@fathi

این یک فساد هست (شما بخون فاکشن) که مقادیری بهش ارسال میکنید یک کوئری (ممکنه پیش فرض قرار داده باشه تویی کدهاش و بعد از دریافت ریکوئست ها براساس اونا برات یک کوئری میسازه) برات میسازه و بصورت ارایه برمیگردونه.


محمد فولادگر
تخصص : Back-End Web Developer
@fouladgardev 6 سال پیش مطرح شد
0

@juza666
ممنون از توجه شما.
امیدوارم برای شما مفید باشه و مورد استفاده قرار بگیره


محمد فولادگر
تخصص : Back-End Web Developer
@fouladgardev 6 سال پیش آپدیت شد
0

@mre_developer
خیلی خوشحالم از اینکه وقت گذاشتید و مقاله را مطالعه کردید و ممنون از انرژی مثبتی که دادید.

مقاله فارسی هم در سایت ویرگول گذاشتم که میتونید مشاهده کنید.
https://virgool.io/Software/نوشتن-فیلترهای-جستجوی-پیشرفته-در-لاراول-bcnyjvxu3ygj

درمورد مشکلی هم که مطرح کردید درست متوجه نشدم که چطوری دارید استفاده میکنید.اگر امکانش هست در قسمت issues های پکیج نمونه کد خودتون را مطرح کنید تا سریعتر شما را کمک کنم
https://github.com/mohammad-fouladgar/eloquent-builder/issues
با تشکر فراروان از شما


محمد رضا اجلالی
@mredeveloper 6 سال پیش مطرح شد
0

@fouladgar_dev
بنده این قسمت رو متوجه نمیشم.

""شما فقط کافیست مدل و لیست پارامترها را به متد to ارسال کنید.

و بعد از آن به ازای پارامترهای درخواستی که قرار است به Query اضافه شوند فیلتر تعریف کنیم.""

اولا این پارامتر ها چی میتونن باشن؟ مثلا من میخوام با پارامتر name سرچ کنم.
فیلترش رو چطوری درست کنم؟
ببخشید وقتم خیلی تنگه تا فردا باید تحویل بدم


محمد فولادگر
تخصص : Back-End Web Developer
@fouladgardev 6 سال پیش آپدیت شد
0

@mre_developer
فرض کنید شما یه ادرس به شکل زیر دارید:
‍‍‍
Get: users/filter?age_more_than=25&gender=male

پارامترها در اینجا age_more_than و gender هستند. مدل هم موجودیت مورد نظر برای جستجو می باشد مانند User
به این مثال توجه کنید:

<?php
    class UserController extends Controller
    {
        public function index(Request $request)
        {
            $users = \EloquentBuilder::to(\App\User::class, $request->all());

            return $users->get();
        }
    }

پس شما باید ۲تا فیلتر به اسم AgeMoreThanFilter و GenderFilter مانند نمونه گفته شده در داکیومنت پکیج ایجاد کنید و Query مورد نظر خود را در فیلترهای تعریف شده بنویسید.
برای اینکه سریعتر پاسخگو باشم لطفا از قسمت issues های پکیج استفاده کنید.
موفق باشید


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

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