Yêu cầu thg 3 23, 2021 7:39 SA 137 2 2
  • 137 2 2
+2

[Laravel] Xin cách gọi dữ liệu từ model

Chia sẻ
  • 137 2 2

Hiện tại e có 3 bảng là: User, Role và Assignment dùng để phân quyền. Nhưng khi dùng $user->with('role')->get() thì chỉ hiển thị data user và role. Vậy muốn hiển thị thêm assignment nữa thì làm sao ạ

class User extends Authenticatable
{
.....
    public function role()
    {
        return $this->belongsToMany(RoleModel::class, 'user_role', 'user_id', 'role_id');
    }
    ......
}

class RoleModel extends Model
{
    public function assignment()
    {
        return $this->belongsToMany(AssignmentModel::class, 'role_assignment', 'role_id', 'assignment_id');
    }
}


class AssignmentModel extends Model
{
     public function role()
    {
        return $this->belongsToMany(RoleModel::class, 'role_assignment', 'assignment_id', 'role_id');
    }
}

2 CÂU TRẢ LỜI


Đã trả lời thg 3 23, 2021 7:48 SA
Đã được chấp nhận
+1

Bạn thử sửa lại câu truy vấn dùng with('role.assignment') xem.

$users = User::query()
    ->with('role.assignment')
    ->get();

Nhưng mà trong dự án bạn nên thêm phân trang bằng hàm ->paginate(20) nữa nha. Chứ dùng get() nó sẽ lôi hết toàn bộ record trong bảng users ra mất.

Chia sẻ
Avatar Thành Long Ứng @ungthanhlong251198
thg 3 23, 2021 7:55 SA

e đã thử câu truy vấn và nó chạy ra rồi ạ. Với cảm ơn a vì chia sẻ thêm cả kinh nghiệm nữa ạ

Đã trả lời thg 3 26, 2021 12:29 SA
0

Ngoài lề 1 chút cho mình hỏi bạn tính thiết kế phân quyền như thế nào ? Có thể cho mình tham khảo ko?

Chia sẻ
Avatar Thành Long Ứng @ungthanhlong251198
thg 3 31, 2021 1:35 SA

Model thì mình thiết kế như ở trên đó rồi đó. Với mình vẫn chưa hiểu ý bạn là thiết kế gì

Avatar Yoshin @nhoxhocju
thg 3 31, 2021 1:57 SA

Ý là bạn thiết kế phân quyền như thế nào á? Bạn có file thiết kế phân quyền k? Có thể cho mình tham khảo đc ko

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí