نوب
3 سال پیش توسط نوب مطرح شد
1 پاسخ

نمایش کارهای کاربر زیرمجموعه نماینده در لاراول

@mhyeganeh
سلام
من یه مشکل دارم میشه لطفا راه حل بگید.
سیستمی مینویسیم که نماینده و کاربر داره
هر نماینده میتونه بی نهایت کاربر زیرمجموعه داشته باشه و هر کاربر مربوط به یک نماینده هست

حالا هر کاربر مثلا تیکت های پشتیبانی ارسال کرده

میخوام اکانت نماینده وقتی وارد میشه به جز اینکه تیکت های خودش را میبینه بتونه تیکت های کاربرهای زیرمجموعه خودش هم در همون قسمت تیکت ها ببینه.

کد فعلی نمایش تیکت های کاربر که البته مال کاربرهای زیرمجموعه نماینده را نشون نمیده چون فقط داره تیکت ها خود کاربر وارد شده را میگیره

    public function userTickets()
    {
        $tickets = Ticket::where('user_id', Auth::user()->id)->latest()->paginate();
        $categories = categoryTicket::all();
        return view('dashboard.user.ticket_list', compact('tickets', 'categories'));
    }

این کد را نوشتم و درست نشون میده ولی نمیدونم بهینه هست یانه . فکر کنم بهینه نباشه چون باید توی 30 یا 40 تا متد دیگه هی آیدی کاربرای نماینده را بگیرم

    public function userTickets()
    {
        $ids = [];
        foreach (Auth::user()->children as $row) {
            $ids[] = $row->id;
        }
        // $tickets = Ticket::where('user_id', Auth::user()->id)->latest()->paginate();
        $tickets = Ticket::whereIn('user_id', $ids)->paginate();

        $categories = categoryTicket::all();
        return view('dashboard.user.ticket_list', compact('tickets', 'categories'));
    }

کاربر ها با ستون adminid به نماینده ها متصل میشن
مدل user

    public function parent()
    {
        return $this->belongsTo(User::class, 'admin_id');
    }
    public function children()
    {
        return $this->hasMany(User::class, 'admin_id');
    }
    public function tickets()
    {
        return $this->hasMany(Ticket::class);
    }

مدل Ticket

    public function user()
    {
        return $this->belongsTo(User::class);
    }

جدول ticket هم با ستون userid به کاربر متصل هست.


ثبت پرسش جدید
میلاد خسروی
تخصص : برنامه نویس بامزه
@milwad 3 سال پیش مطرح شد
0

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


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

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