Asked Mar 31st, 2020 9:10 a.m. 127 0 1
  • 127 0 1
0

Laravel sử dụng transaction

Share
  • 127 0 1

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 ANSWERS


Answered Mar 31st, 2020 9:16 a.m.
0

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

Share
Mar 31st, 2020 9:36 a.m.

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 da.jpg đây là view sử lý khi lưu lịch sử giao dịch,

0
| Reply
Share
Avatar Bùi Hiếu @buihieubthc2rb
Apr 1st, 2020 12:26 a.m.

@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 ?

0
| Reply
Share
Avatar Dương Mạnh Hoàng @duong.manh.hoang
Apr 1st, 2020 1:04 a.m.

@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ỉ?

0
| Reply
Share
Apr 1st, 2020 2:33 a.m.

@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

0
| Reply
Share
Apr 1st, 2020 2:39 a.m.

@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

0
| Reply
Share
Avatar Dương Mạnh Hoàng @duong.manh.hoang
Apr 1st, 2020 6:31 a.m.

@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ì

0
| Reply
Share
Apr 1st, 2020 6:34 a.m.

@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

0
| Reply
Share
Avatar Dương Mạnh Hoàng @duong.manh.hoang
Apr 1st, 2020 6:48 a.m.

@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?

0
| Reply
Share
Apr 1st, 2020 7:16 a.m.

@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 ,

0
| Reply
Share
Avatar Dương Mạnh Hoàng @duong.manh.hoang
Apr 1st, 2020 7:28 a.m.

@khanh1234 và bạn cần lấy cả số tiền trước khi giao dịch hay gì?

0
| Reply
Share
Apr 1st, 2020 7:31 a.m.

@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 ạ

0
| Reply
Share
Avatar Dương Mạnh Hoàng @duong.manh.hoang
Apr 1st, 2020 7:42 a.m.

@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

0
| Reply
Share
Apr 1st, 2020 8:00 a.m.

@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

0
| Reply
Share
Avatar Dương Mạnh Hoàng @duong.manh.hoang
Apr 1st, 2020 8:20 a.m.

@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

0
| Reply
Share
Apr 1st, 2020 8:22 a.m.

@duong.manh.hoang vâng ạ,thks bạn,

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