-1
votes

I have a project on Symfony2. I should say that I don't consider myself a master of Symfony2 in any way. You could say I'm a newbie.

My entities are bound via YAML to database and an Entity class is created in php not bound by annotations.

I have an Entity likes this:

Project/CoreBundle/Resources/config/doctrine/Card.orm.yml

Project/CoreBundle/Entity/Card.php

Card - is a dashboard element, that can be dragged around for user's convenience.

The corresponding Card.orm.yml and Card.php have structure that correspond to table in db. I created this piece of code and worked fine.

The Problem: now that I try to add more fields to table, to orm and Entity, they are not being selected by Symfony2/Doctrine2 query (I've looked it up in debugger and not even in query the new field is SELECTed).

More so, I try to add any field and it doesn't become bound. In retrieved object it is always NULL. I've looked up MAPPING of this entity and this field is BEING MAPPED. But in select query, again, it is not present. I've used clear caching mechanisms and such - didn’t work. I've deleted OTHER fields from orm and entity - Doctrine2 throws exceptions, though when I remove this field (it still being present in table) and works the same, just returns null.

What works is this:

$queryBuilder
        ->select(array('card','card.isSpecialCard'))

The "isSpecialCard" field is the one that's not being bound to select, so I have to custom-select it out of table and THEN it's loaded via select. Also, it's being loaded in another level of array, NEXT TO THE OBJECT OF CARD not IN THE OBJECT, though the object still has that field AND IT HAS VALUE AS IF IT WAS SELECTED.

I am using Symfony 2.1.

1
Have you tried using php app/console doctrine:generate:entities Namespace:Card php app/console doctrine:schema:update --forcestevenll
Also, if you have .orm.yml file for your entity structure why do you say it does not bound by annotations. There should not be any annotationsstevenll
"why do you say it does not bound by annotations. " => "There should not be any annotations". that is EXACTLY why i said that :)drakonli
Ok, I read it as you had both set up. Usually after altering an Entity ORM file, i use the above commands and check the generated code if it fits my needs, then I update my schema. Everything works fine.stevenll
Well, thank you, i don't know what it changed - yaml and Card.php are the same, but now it works. I used this - php app/console doctrine:generate:entities Namespace:Card to generate Entity. And i'm so ashamed that i didn't try it before. Write an actual answer and i'll rep you.drakonli

1 Answers

1
votes

You should not make the changes manually, but let the ORM driver do them for you. Use these two commands to update the Entity and your database accordingly:

php app/console doctrine:generate:entities Namespace:Card
php app/console doctrine:schema:update --force