Truy vấn dữ liệu mysql với bitwise status laravel
Hiện tại model của em đang có một số status:
- init =1
- pending = 64
- success = 8
- charged = 128
Một record của model sẽ đi từ init -> pending -> success -> cheger hoặc init -> success -> charged. Hiện tại em query model->where('status', '&', $status) với status = 1 thì dữ liệu trả ra cả những record pending,success,charged vì những record này từng ở status =1 rồi.
Không biết có cách nào để truy vấn sql lấy những record đang ở trạng thái mình muốn tìm không ạ?. Em cảm ơn
3 CÂU TRẢ LỜI
Nếu chỉ có record 1 không thì bạn có thể viết riêng điều kiện nếu $status = 1
thì query sẽ là model->whereIn('status', [1, 8, 64, 128]])
:v
Còn nếu theo kiểu status là 64 thì sẽ phải trả ra 64, 8, 128 thì sẽ phải viết kiểu khác
nếu whereIn vậy thì khi từ init sang peding status trong db sẽ là 65 sẽ không query được record pending tới a
Như mình hiểu là bác đang muốn tìm chính xác record phải k nhỉ?
Tìm status là pending
id: 2 , status = 65 // init | pending => pass
id: 3 , status = 73 // init | pending | success => fail
Vì rule như mình thấy, thì pending luôn sau init
model->where('status', '=' , 1 | 64)
Tương tự nếu dùng cho các status khác nhé bác
Giống cách phân quyền 777 linux quá nhỉ. bạn thử xem : model->where("status & $status", '>', 0)