راکت
Armin Rahmati
Armin Rahmati
توسط Armin Rahmati مطرح شد
4 پاسخ

نمایش اطلاعات در لاراول

سلام دوستان.
من تو سایتم دو تا کاربر دارم که یکی میتونه محصولات شرکتشو بزار و اون فرد بیاد محصولات رو نگاه کنه.
به عنوان مثال وقتی هر شرکت محصولشو ادد میکنه، داخل کنترلر این کدو مینویسم که به اون شرکت محصولات خودش فقط بهش نشون داده بشه و محصولات شرکت های دیگه بهش نشون داده نشه.
;products = auth()->user()->Product()->latest()->paginate(20)$
حالا برای اینکه تو صفحه اصلی سایت وقتی افراد میان و روی هر شرکت کلیک میکنن و میخوان ببینن که هر شرکت چه محصولاتی داره به جای کد بالا چه کدی باید قرار داد؟
وقتی کد زیر رو قرار میدم واسه همه ی شرکت ها همه محصولات رو نشون میده، که من میخوام برای هر شرکت فقط محصولات خودش رو نشون بده.
;products = Product::latest()->paginate(20)$


ثبت پرسش جدید
Seyyed Mojtaba Hoseyni
Seyyed Mojtaba Hoseyni
تخصص :برنامه نویس Laravel و ReactJS
@SMH1186 سال پیشمطرح شد
0

سلام
برای این کار شما میتونید از دستور where استفاده کنید.

$products = Product::where('company_id',$id)->paginate(20)

که اون $id آیدی همون شرکت هستش
البته شما میتونید به جای id از موارد دیگه ای هم استفاده کنید.

روش دوم استفاده از route model binding هستش به صورت زیر:

public function getProducts(Company $company){
    $products=$company->products()->paginate(20);
}

Armin Rahmati
Armin Rahmati
@arminrahmati9996 سال پیشمطرح شد
0

@SMH118
از روش دوم استفاده کردم ولی هیچی نشون نمیده.


Seyyed Mojtaba Hoseyni
Seyyed Mojtaba Hoseyni
تخصص :برنامه نویس Laravel و ReactJS
@SMH1186 سال پیشمطرح شد
0

دقت کنید که در route شما، باید پارامترش وجود داشته باشه به صورت زیر:

Route::get('/someurl/{company}','SomeController@getProducts');

مطمئن بشید که مقداری در دیتابیس وجود داشته باشه.
رابطه بین محصول و شرکت رو هم برسی کنید که درست باشه.
@arminrahmati999


علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat6 سال پیشمطرح شد
0

یک مدل Company بسازید
و بین این مدل و Products رابطه الکوئنت رو بوجود بیارید و خیلی راحت محصولات مربوط به شرکت رو دریافت کنید
حتی میتونید Eager load هم بکنید که کوئری ها بهینه بشند
چیزی شبیه زیر:

$company = Company::find($company_id);
$company->load('products')->paginate(20);

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

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