Laravel sử dụng transaction
Chào mọi người,hiện em đang mắc phần thêm lưu csld khi thực hiện thu chi đây là csdl ạ em muốn lấy ví của user sau lấy id của ví khi thực hiện thu chi em chọn type=0(chi) thì người tính ra mony_befor bằng số tiền nhập vào - đi số tiền hiện tại ,và ngược lại type=1 thu thì cộng ạ
1 CÂU TRẢ LỜI
Mình đang không hiểu ý của bạn lắm. Cái bảng expends đó bạn đang lưu lịch sử thu chi hay cái gì vậy
vâng cái bảng expends là lưu lịch sư thu chi, giờ em muốn lây ví của user và id của ví đó để thực hiện giao dịch ạ,nhưng chưa xử lý đk đây là view sử lý khi lưu lịch sử giao dịch,
@khanh1234 Bạn đang có gì ở đầu vào, và bạn muốn lấy cái gì ở kết quả ? Nói rõ ra hộ mình với. Và bạn muốn xử lý bằng Sql hay xử lý bằng Laravel Relation ?
@khanh1234 Theo mình thì lịch sử giao dịch thì bạn chỉ cần lưu lại số tiền giao dịch, loại giao dịch,... lúc đó và sẽ update trực tiếp vào ví của người dùng chứ không cần thiết phải có cả money_before và after như kia. Nhưng cứ giải quyết theo csdl bạn đã build nhé. Theo bạn nói bạn đang muốn lấy ví của user và id của ví? Tức là bạn đã có thông tin user đúng không, vậy thì viết 1 function quy định relation trong model User, nếu bạn chưa rõ phần relation trong laravel thì có thể tìm các bài liên quan để đọc hoặc lên docs để tìm hiểu nhé. Có relation rồi thì chỉ cần trỏ tới đó là lấy đc thông tin ví
$wallet = $user->wallet;
Ở đây wallet
chính là relation mà bạn quy định trong model User
nhé. Theo mình nghĩ là 1 user sẽ chỉ có 1 ví và ngược lại nên đây sẽ là quan hệ 1 - 1 nhỉ?
@duong.manh.hoang vâng mình có làm rồi , hiện tại thì ở giao dịch thu chi này,mình cần lấy được thông tin của ví mà user đăng nhập, $myEx = Auth::user()->wallet->money , mình đang mắc ở chỗ là lưu money_before là sô tiền ở ví ,còn money_after lưu được bằng nếu chi(có type =1) thì sẽ tính được bằng cách money_before -= số tiền mình chi(là cái value) ,còn thu thì cộng vào
@buihieubthc2rb chào bạn, ở đầu vào thì mình có thông tin ví của user đăng nhập (tiền),bây giờ mình muốn lưu lịch sử thu chi vào csdl ,nếu chi (trường type =1) thì tính được money_after cách lấy sô tiền hiện tại là money_before ở trong vi trừ đi số tiền mình cần chi
@khanh1234 về csdl của bạn thì mình hiểu rồi. Thế giờ cái bạn cần là gì vậy? Mình không hiểu được cái lấy thông tin của ví user đăng nhập bạn muốn nói tới ở đây là gì
@duong.manh.hoang à,thông tin ví đăng nhập là,lấy được số tiền của ví đó dể thực hiện giao dịch, minh ddang mac cho do
@khanh1234 hiện tại mỗi user của bạn sẽ chỉ có duy nhất 1 ví thôi đúng không. Nếu có phát sinh giao dịch thì bạn update vào cái money
của bảng wallet
đó. Lấy ra số tiền thì như bạn nói ở trên đó
Auth::user()->wallet->money
Đúng điều bạn đang thắc mắc chưa vậy?
@duong.manh.hoang sô tiền của ví thì mình lấy được rồi,nhưng trước khi giao dịch tiền của ví là moneybefore ,
@khanh1234 và bạn cần lấy cả số tiền trước khi giao dịch hay gì?
@duong.manh.hoang Auth::user()->wallet->money ,từ đây mình lấy được tiền của ví, sau sô tiền này sẽ là số tiền trước khi giao dịch(money_before) lưu trong bảng expend ạ
@khanh1234 à mình hiểu ý bạn rồi. Số tiền trước khi giao dịch nó sẽ tương đương với lần giao dịch gần nhất của bạn đúng không?
$wallet = Auth::user()->wallet;
$latest exchange = $wallet->expends->latest()->first(); // Cần thiết lập quan hệ expends trong model Wallet
$latest exchange
chính là record mới nhất trong bảng expends mà liên quan tới wallet của user. Giờ thì bạn muốn lấy thông tin gì thì chỉ cần gọi đến nó thôi
@duong.manh.hoang vậy nếu mình lấy được money_before để lưu trong bảng expends, nếu mục chi thì lấy money_before -= value ra được moneyafter,thì sử lý như nào bạn nhỉ,mình muốn lưu được trường type khi mà thu thì tính được số tiền sau giao dịch,chi thì cx thế ,giống lưu status 1 và 0 , 0 là chi và 1 là thu
@khanh1234 thật sự là bạn nói diễn tả khó hiểu quá @@ thôi mình cứ nói qua như này nhé. 1 user của bạn sẽ có 1 wallet, và sẽ liên kết qua user_id ở wallet. Và 1 wallet sẽ có nhiều expends và được liên kết bằng wallet_id trong expends. Cứ mỗi lần phát sinh 1 giao dịch thì bạn sẽ tạo mới 1 record trong expends và record đó có thể là thu hoặc chi tùy vào type của nó. money_before hay after cũng vậy, bạn tính toán và lưu lại thôi
@duong.manh.hoang vâng ạ,thks bạn,