راکت

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

4 پاسخ

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

ثبت پرسش جدید

پاسخ‌ها

4
Seyyed Mojtaba Hoseyni
Seyyed Mojtaba Hoseyni
@SMH118

تخصص: برنامه نویس Laravel و ReactJS

سلام
برای این کار شما میتونید از دستور 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
@arminrahmati999

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

شاید پاسخ شما همین‌جا باشد

Seyyed Mojtaba Hoseyni
Seyyed Mojtaba Hoseyni
@SMH118

تخصص: برنامه نویس Laravel و ReactJS

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

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

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

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

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

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

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

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