According to Laravel docs:
You can use the transaction method in the database phase to start a set of operations in a database transaction. If an exception is thrown in a Closure transaction, the transaction will be automatically discarded. If Closure is successful, the transaction will be automatically completed.
You use transactions when the set of operations you perform with a database must be atomic.
That is, they all must succeed or fail. Nothing in between.
Transactions should be used to ensure that the database is always in a consistent state.
Bad practice to create a transaction always?
It depends on the context in which you are talking here. If this is an update, I highly recommend using transactions explicitly. If it is SELECT, then NO (explicitly).
source share