در این مقاله جستجو در Eloquent laravel برای جدولهایی در دیتابیس که با هم رابطه دارند را به شما آموزش می دهیم.
بگذارید بگوییم ما یک سیستم رزرو بلیط داریم. ما دو مدل اولیه، کاربر و مدل بلیط داریم. ما می خواهیم جستجو را فقط بر روی بلیط انجام دهیم، اما با نام کاربری که بلیط را خریداری کردیم. بنابراین سوال این است، چگونه می توانیم یک مجموعه داده های بلیط را با جستجوی نام کاربر بازگردانیم؟
یک کاربر بلیط دارد، به عبارت دیگر، آن بلیط متعلق به یک کاربر است. بیایید رابطه بین مدل ها ایجاد کنیم.
public function user()
{
return $this->belongsTo(User::class);
}
در حال حاضر ما می توانیم پرس و جو در مدل کاربر از طریق مدل بلیط را انجام دهیم.
بگذارید بگوییم ما میخواهیم نتایج را در TicketsController خود فیلتر کنیم. ما می خواهیم نام کاربر را در مدل کاربری از طریق مدل بلیط جستجو کنیم. Laravel یک راه خوب برای جستجو، با whereHas و OrWhereHas فراهم می کند. با کمک این دو، ما می توانیم به راحتی آنچه را که می خواهیم انجام دهیم:
// TicketsController.php
public function index(Request $request)
{
$tickets = Ticket::whereHas('user', function ($query) use ($request) {
$query->where('name', 'like', "%{$request->name}%");
});
return view('tickets.index', compact('tickets));
}