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

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

Chia sẻ
  • 141 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