Hi,

Ik heb 2 entiteiten, genaamd: Invoice & Payment.
Dmv foreign keys ( annotation mapping ) zijn deze aan elkaar verbonden. Vanuit de invoice, kan ik payments opvragen ( $oInvoice->getPayments() ).
<?php
$oEntityManager = $this->getServiceLocator()->get( 'Doctrine\ORM\EntityManager' );
$oInvoice = $oEntityManager->getRepository( '\Payment\Entity\Invoice' )->findOneBy( array( 'id' => $this->oSession->offsetGet( 'invoiceId' ) ) );
?>

Mijn select gaat nu niet goed, omdat deze ook velden uit de andere entiteit probeert op te halen. Foutmelding: SQLSTATE[42S22]: Column not found: 1054 Unknown column 't0.sms_sent' in 'field list'.

Is het beter om DQL te gebruiken? Of heeft iemand hier een oplossing voor?

Graag reactie waneer je ervaring hebt met doctrine 2.
Welke relatie hebben de 2 entities met elkaar? Want ik begrijp nu niet helemaal wat getPayments() doet. Ik hoop niet dat die een query uitvoert?
Mijn collega heeft een aanpassing gedaan in de database waardoor de entiteit niet meer overeen kwam met de database :-/ Daar was ik dan de hele dag mee bezig :(

Het is opgelost! Bedankt voor je tijd.
En daarom run ik elke dag schema-tool:update :)
Wordt je db ge-update of je entiteiten?
Ik ken alleen deze:

doctrine:query:sql
doctrine:query:dql
doctrine:schema:drop
doctrine:mapping:info
doctrine:schema:create
doctrine:database:drop
doctrine:schema:update
doctrine:generate:crud
doctrine:generate:form
doctrine:mapping:import
doctrine:database:create
doctrine:generate:entity
doctrine:mapping:convert
doctrine:schema:validate
doctrine:generate:entities
doctrine:cache:clear-query
doctrine:cache:clear-result
doctrine:cache:clear-metadata
doctrine:ensure-production-settings


en zo ver ik weet wordt met doctrine:schema:update alleen de database geupdate en met
doctrine:generate:entities worden de entities aangemaakt die je dan desgewenst nog met de hand wijzigt
generate-entities ken ik wel inderdaad, die gebruik ik wel vaak nadat ik relaties heb gelegd. Na een db wijziging moet er dan wel wat handwerk gebeuren. Mja, zoveel werk is dat meestal niet.
Frank, zijn dat niet de commands van de doctrinebundle van symfony? Dacht dat Doctrine2 zelf schema-tool commands had.

Maar goed, doctrine:schema:update update je DB zodat het overeen komt met je entity. Het is een slimme command die zo slim mogelijk de dingen probeert te wijzigen zodat er geen problemen zijn. In de productie omgeving "moet" je dit trouwens nooit gebruiken, maar gebruik je de doctrine migrations library.
Merk overigens op dat SQLite geen schema:update command accepteert. Dan gebruik ik altijd do:schema:drop, do:schema:update en de doctrine data fixtures library.

Het omzetten van db naar entity noemt men reverse engineering en daar kun je hier wat meer over lezen: http://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html

[edit]linkje aangepast[/edit]

Reageren