Asked Mar 23rd, 7:39 AM 97 2 2
  • 97 2 2
+2

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

Share
  • 97 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 ANSWERS


Answered Mar 23rd, 7:48 AM
Accepted
+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.

Share
Avatar Thành Long Ứng @ungthanhlong251198
Mar 23rd, 7:55 AM

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 ạ

+1
| Reply
Share
Answered Mar 26th, 12:29 AM
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?

Share
Avatar Thành Long Ứng @ungthanhlong251198
Mar 31st, 1:35 AM

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ì

0
| Reply
Share
Avatar Yoshin @nhoxhocju
Mar 31st, 1:57 AM

Ý 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

0
| Reply
Share
Viblo
Let's register a Viblo Account to get more interesting posts.