سلام به همگی دوستان .
من میخوام با استفاده از سرچ باکس یه جستجو ایجاد کنم که همزمان داخل چند جدول رو بگرده و نتیجه رو نشون بده !
ممنون میشم راهنمایی کنید!
کارای ایجکسیش رو انجام دادم فقط سمت کویری سمت سرورش مونده.
سلام خسته نباشید .
فک نکنم کار سختی باشه براتون . کافیه در کنترلر مربوطه مدل های مورد نظرتون رو با شرط های مورد نظرتون صدا بزنید .
و بعد نتیجه هر مدل رو به صورت یک آرایه برگردونید و در آخر با استفاده از تابع 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
@vaysi
شما حتی میتونید شرطهای هر مدل را به عنوان یک فیلتر در نظر بگیرید.
این باعث میشه در کنترلر بجای چک کردن شرط های زیاد از فیلترهای هر مدل بر اساس پارامترها استفاده کنید.
به این پکیج یه نگاهی کنید.کارتونا حل میکنه:
@fouladgar_dev
سلام وقتتون بخیر.بنده الان در حال خاندن مقاله انگلیسی شما بودم. و واقعا لذت بردم.
بنده پکیج رو نصب کردم و کلاس filter رو هم در App/EloquentFilters/User/NameFilter
اما زمانی که به صورت get -> name=mohamad رو براش میفرستم مینویسه Filter not found.
ممنون میشم راهنمایی کنید.
این یک فساد هست (شما بخون فاکشن) که مقادیری بهش ارسال میکنید یک کوئری (ممکنه پیش فرض قرار داده باشه تویی کدهاش و بعد از دریافت ریکوئست ها براساس اونا برات یک کوئری میسازه) برات میسازه و بصورت ارایه برمیگردونه.
@mre_developer
خیلی خوشحالم از اینکه وقت گذاشتید و مقاله را مطالعه کردید و ممنون از انرژی مثبتی که دادید.
مقاله فارسی هم در سایت ویرگول گذاشتم که میتونید مشاهده کنید.
https://virgool.io/Software/نوشتن-فیلترهای-جستجوی-پیشرفته-در-لاراول-bcnyjvxu3ygj
درمورد مشکلی هم که مطرح کردید درست متوجه نشدم که چطوری دارید استفاده میکنید.اگر امکانش هست در قسمت issues های پکیج نمونه کد خودتون را مطرح کنید تا سریعتر شما را کمک کنم
https://github.com/mohammad-fouladgar/eloquent-builder/issues
با تشکر فراروان از شما
@fouladgar_dev
بنده این قسمت رو متوجه نمیشم.
""شما فقط کافیست مدل و لیست پارامترها را به متد to ارسال کنید.
و بعد از آن به ازای پارامترهای درخواستی که قرار است به Query اضافه شوند فیلتر تعریف کنیم.""
اولا این پارامتر ها چی میتونن باشن؟ مثلا من میخوام با پارامتر name سرچ کنم.
فیلترش رو چطوری درست کنم؟
ببخشید وقتم خیلی تنگه تا فردا باید تحویل بدم
@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 های پکیج استفاده کنید.
موفق باشید
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟