It is definitely good and good practice to add these hasX() or isX() methods to your objects, and I personally think this is the right place to put them.
The main argument to keep these methods inside your entity is that you have access to the private and protected properties to evaluate the result of hasX() or isX() .
Otherwise - putting aside distraction - you will need to expose (maybe reasonable) information in a public API by creating a getter function for a property that will not serve any other purpose.
You can even add a huge number of getter functions that ... only serve to calculate the result from the outside.
You can see an example in the FOSUserBundle Model\User class. ( Code )
source share