bin/console make:entity on Mysql and then later you switch your application to Postgres and you have a table called
user, which you most likely have when using security component of Symfony.
Then you will receive an error because
user is a reserved word in Postgres!
Continue reading “Migrating user table from Mysql to Postgres with Symfony and Doctrine”
An exception occurred while executing 'INSERT INTO user (id, email, roles, password, is_verified) VALUES (?, ?, ?, ?, ?)' with params [3, "email@example.com", "", "your-encrypted-password", 0]:
SQLSTATE: Syntax error: 7 ERROR: syntax error at or near "user"
LINE 1: INSERT INTO user (id, email, roles, password, is_verified) V...
You might encounter this deprecation message after your upgrade to symfony 5.1 in your symfony project:
Since symfony/dotenv 5.1: Passing a boolean to the constructor of “Symfony\Component\Dotenv\Dotenv” is deprecated, use “Dotenv::usePutenv()
To fix this, go to config/bootstrap.php and remove the
false from the Dotenv constructor:
Actually the file config/bootstrap.php has been removed from symfony 5.1 and was replaced in public/index.php.
But since the project was updated from an symfony 4 version the bootrap file is still present.
So another option would be to remove the boostrap file and update the project entirely to symfony 5.1 recipe.
This is not trivial though as you can see in this corresponfing PullRequest.
Calculating European VAT Rates with PHP – the easy way.
Disclaimer: No legal advice, just a little experience report.
If you sell digital things (services, digital goods etc.) to EU countries, you might have to calculate the VAT at the rate of the customer’s country (and even pay it there afterwards).
Continue reading “EU/VAT – Mehrwertsteuer Madness”
The latter is even the more inconvenient part, but at least the first part can be done quite easily with good old PHP.
So i updated a symfony app the other day to version 5.1.6 and suddenly the static code analyzer psalm ran appearently in an hangup loop and never terminated.
After some investigation it showed that symfony added a .preload.php file to the src directory to enable the new PHP7.4 preloading feature.
Unfortunatly psalm parsed this file and followed all includes.
This took it so long that i took it for an endless loop.
There is some discussion in symfony github issues about this and the conclusion was to replace src/.preload.php with config/preload.php which happens now in a recipe.
Continue reading “Psalm Static Analyzer fails with Symfony’s builtin preloading file”
Symfony’s deprecation warnings while running tests is a great service to keep track with upcoming changes in newer symfony versions.
However these warnings can break your CI/CD pipeline and sometimes you cant fix all deprecation warnings immediatly.
To disable them you can set the ENV var
Continue reading “Disable symfony deprecation warnings in PHPUnit tests”
and the warnings will not be displayed anymore and CI/CD will pass again.
Update from comments:
does also work and will still show the deprecation warnings count. (Thx Max)
When working with APIs you sometimes cant use the live API in the tests.
Because you dont own the API, dont want to spam, cant create entities for testing or various other reasons.
Then you need to mock the API and deliever responses from fixtures.
Though there is this term of “Don’t mock what you don’t own” we will mock the API because we dont own it. :)
https://github.com/julienfalque/http-mock is a nice library which helps a lot when mocking an API.
And when your client is using Guzzle there is also a Guzzle handler for HttpMock that makes integration easy.
How does this work?
Continue reading “mocking APIs with Guzzle”
One very cool feature of the Symfony Workflow Component is the ability to export workflows via graphviz.
Did you know you can also directly render those as PDF files?
Continue reading “Symfony Workflow Component: Dump workflows as PDF”
Angular for frontend with symfony delivering the data have become quite a common setup.
When working with this constellation you will sooner or later come across the i18n topic. Most likely you would want to share translations between front- and backend. So that you could keep translations in one single location while using it for frontend templates as well as server-side error messages etc.
One approach would be to store translations in the symfony yml or xml files and deliver those to the frontend via an api endpoint.
Given that front- and backend-code run on the same server, there is an even simpler solution.
Continue reading “Symfony and Angular: shared translations”
Since version 3.1 there is a Cache component with a PSR-6 implementation integrated in Symfony.
So we do not need to add a 3rd party lib as Doctrine Cache anymore when we need caching these days.
Doctrine Cache does the job but by implementing a standard the Symfony Cache seems to have another advantage besides its delievered anyway. So i checked it out.
Documentation is still a bit sparse and the best resource so far is this blogpost:
I wont go into detail on how you use the Cache but rather how you integrate it with Redis, which is my favourite Cache backend.
Continue reading “Symfony Cache Component with SncRedisBundle”
I recently started to do all PHP development with docker, since I was just tired of installing tons of dev libraries on my machine. Most of which i couldn’t even remember what they actually were good for.
When I first tried docker (docker-toolbox for mac) I was really disappointed how slow symfony apps ran inside the container. Continue reading “Symfony development with docker on a mac”