سلام دوستان.
من یه سایت دارم که دو نوع کاربر داره.
یک نوع کاربر (admin) که محصولات خود را در سایت قرار میدهد و کاربر (user) دیگر که محصولات هر شرکت را مشاهده و در صورت نیاز سفارش میدهد.
کاربر (user) در پنل کاربری خود میتواند محصولاتی که از شرکت مشخص خرید کرده را مشاهده کند، که در زیر ویو و کنترلر آن را مشاهده میکنید.
@foreach($orders as $key=>$order)
<tr>
<td>{{ $key+1 }}</td>
<td>{{ $order->product->user->office }}</td>
<td>{{ $order->product->title }}</td>
<td>{{ $order->product->buyPrice }}</td>
<td>{{ $order->product->consumerPrice }}</td>
</tr>
@endforeach
public function order() {
$orders = auth()->user()->order()->latest()->paginate(10);
return view('Home.panel.orders' , compact('orders'));
}
ولی مشکلی که الان دارم اینه که چطور و با چه کدی در پنل کاربری (admin) هم نشون بدم که چه کاربرانی (user) چه محصولاتی از شرکت را خریداری کرده اند؟
سلام
بین کاربران و محصولات رابطه تعریف کنید و از اون طریق اطلاعات رو بخونید و نمایش بدهید.
یک رابطه چند به چند(many to many) احیانا دارید.
,و برای خواندن اطلاعات هم اول کاربرانی که نقش user دارند رو واکشی کنید.
سلام خب اینکه کاری نداره شما همه user ها رو به view ارسال میکنید و با استفاده از
$user->order()->get()
به کل سفارشات هر کدوم دسترسی دارید.برای نمایش بهتر میتونین این متد رو داشته باشین
public function userOrders($userId){
$orders = Order::where('user_id', $userId)->paginate(10);
return view('user.order', compact('orders');
}
@thrashzone13
ببین الان من این ویو رو دارم
@foreach($orders as $order)
<tr>
<td>{{ $order->user->firstName }}</td>
<td>{{ $order->user->lastName }}</td>
<td>{{ $order->user->office }}</td>
<td>{{ $order->title }}</td>
<td>{{ $order->user->address }}</td>
<td>{{ $order->user->phoneNumber }}</td>
</tr>
@endforeach
public function index() {
$orders = Order::latest()->paginate(10);
return view('Admin.orders.all' , compact('orders'));
}
وقتی اینو داخل کنترلر مینویسم تمام مشتری هایی که داخل سایت سفارش دادن رو بهم نشون میده که درسته. ولی همون جور که گقتم میخوام به هر شرکت فقط مشتری های خودشو نشون بده.
بعد من این وقتی کد زیر رو میزنم، تو جدول هیچی نشون نمیده، در واقع جدول خالیه.
public function index() {
$orders = auth()->user()->order()->latest()->paginate(10);
return view('Admin.orders.all' , compact('orders'));
}
کوئری که در اخر آوردین اشتباهه!!
شما باید اول مدل رو بنویسن و سپس کوئری بزنین.
کلا نمیدونم ایا شما روابط رو ایجاد کردین فیلدهای جداول چی هستن!! بذاری بهتر راهنمایی میکنم
باید در این شرایط یه pivot table یا جدول میانی در کنار یک رابطه Many to Many (چند به چند) استفاده کنی..
وقتی کاربر محصولی رو میخره » id محصول و id یوزر در جدول ثبت میشند.
باید یه api به شکل زیر بوجود بیاری
$product->buyers()->filtering(..)->get();
$user->products()->filtering(..)->get();
filtering آپشنال هست
بعد که چنین روابطی در دسترس هستند، میشه راحت در پیج ادمین کاربر هارو + محصولاتشون رو Eager load کرد
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟