با سلام
من دو جدول users و letters رو دارم. رابطه بینشون تعریف شده و یک به یک است.
این روابط در مدلهام که مشکلی ندارند.
User
public function letter()
{
return $this->hasOne('App\Letter');
}
Letter
public function user()
{
return $this->belongsTo('App\User');
}
ولی من قصد دارم بتونم روی هر دو جدولم شرط بذارم و خروجی رو دریافت کنم، ولی تنها امکان شرط گذاشتن در روی یک جدول رو دارم، و اون هم جدولی است که مدلش رو فراخونی کردم:
public function index()
{
$users = User::where('role', 'simpleuser')
->orderBy('id', 'asc')->paginate(30);
return view('index', compact('users'));
}
اما من قصد دارم یک چنین چیزی اتفاق بیفته که نمونهای که در ذهنمه رو آوردم که باهاش به خطا میخورم. یعنی بتونم هم روی جدول users کوئری بزنم و هم جدول letters. چون وقت dump میگیرم، relationهای هر رکورد جدول که در جدول دیگه وجود داره نمایش داده میشوند، پس باید به نحوی روی اونها هم بتونم کوئری بزنم.
ممنون میشم راهنمایی کنید و خطای کندم رو اصلاح کنید.
public function index()
{
$users = User::where('role', 'student')
->where('letter.status', 'approved')
->orderBy('id', 'asc')->paginate(30);
return view('index', compact('users'));
}
سلام وقتتون بخیر!
برای شرط گذاشتن روی رابطه ها باید به این صورت عمل کنی
User::whereHas("letter",function($qyuery){
$query->where("count">10);
})->with("letter")->first();
توی مثال بالا سعی دارم letter هایی که بیشتر از ۱۰ هست رو بیارم
سلام مجدد خدمت شما @Rp76
ممنون از پاسختون. این رو قبلاً جایی دیدم پس از گوگل کردن که از anonymous function استفاده کرده. ولی دقتی روش نکردم و مجدد که شما ذکر کردید، بررسی کردم و به درستی جواب داد و از این بابت یک دنیا ممنونم ازتون که وقت گذاشتید و مشکل بنده حل شد.
سلام
امکان داره در این مورد هم راهنماییم کنید. کد زیر به صورت کامل تا زمانی که شروط همگی True باشند، درست کار میکنه.
$users = User::with(['proposal' => function ($query) {
$query->where('step_one','completed')
->where('is_approved_by_admin','approved');
}])->where('role', 'student')
->orderBy('id', 'asc')
->paginate(30);
اما در صورتی که حتی یکی از شروط هم برقرار نباشه، خطای زیر برگشت داده میشه:
Attempt to read property "arabic_title" on null (View: C:\xampp\htdocs\script\resources\views\admin\primary\index.blade.php)
چطور میشه این مورد رو هندل کرد. چون طبیعیه که بعضی از شروط True نخواهند بود.
مشکل اینجاست که شما میگید
اطلاعات رو بیاره و NAME رو بخونه حالا اگر اطلاعاتی نباشه name هم نیست
اگر گفتید
{{$data->name}}
بجاش بگید
{{@$data->name}}
{{$data->name ?? ""}}
ممنون از شما. برای اون دسته از عزیزانی که شاید به مشکل من برخورده باشند، من با تغییر زیر در نهایت مشکلم برطرف شد:
$proposals = Proposal::with(['user' => function ($query) {
$query->where('role', 'student');
}])->where('step_one', 'completed')
->where('is_approved_by_admin','approved')
->orderBy('id', 'asc')
->paginate(30);
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟