[13.x] Allow ->using(...) in ->change() migrations for PostgreSQL compatibility - #60901
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This enables the use of
->using(...)for the function->change()in migrations so that they will work in PostgreSQL.PostgreSQL can't automatically convert some data types to others when altering the data type of a column via
ALTER TABLE .. ALTER COLUMN.The
USINGkeyword can be used to tell PostgreSQL how to covert the data.This PR adds that capability.
I don't think the other supported databases have the need for
USINGso it's just ignored in them in this fix.For reference on the discussion:
Here's an example of a migration that needs it: https://github.com/aureuserp/aureuserp/blob/master/plugins/webkul/support/database/migrations/2025_11_14_102615_alter_currency_rates_table.php
Without it, it errors out with:
when running
php artisan erp:installwhen reinstalling it.Below is the code where it shows the
->using(...)keyword added to make it work in PostgreSQL too:The benefit is that other Laravel Web Apps, which may be build for perhaps MySQL or SQLite, can be used with PostgreSQL as long as they use Laravel's Database Classes with some compatiblity fixes like this PR provides.