Yes:you can define that the foreign key order_id can be NULL. You have to do it both in the database table definition and in the mapping. Don't know exactly where to put it in the mapping via php, as you do, in MapField( ) or in mapOneToMany( ), but somewhere you can define nullable =true (without quotes).
Good practice or not to do that? Depends on the domain you are modeling: if you can have invoices without an order, then the order can be NULL. If you can only have invoices when you have an order, then is the order cannot be NULL. It depends on how you define an order and an invoice. I personally don't pay any invoices where I don't get anything in return that I have ordered, but you can make other definitions of orders and invoices, of course. Try to be as clear as possible. If you can explain it to your customers, then it must be doable to make a mapping. Another possibility I mentioned is using an empty order for this, a kind of dummy order. This is the Null-Object pattern: http://en.wikipedia.org/wiki/Null_Object_pattern . The advantage of using it is that in some cases where you normally would have a conditional to check if there is an order or not, you now have an order (only empty). And of course you can also say: an order can induce recurring orders; and then there is only one invoice for each order (or none, in case you want a "standalone invoice"). On Sunday, 4 May 2014 16:43:35 UTC+2, Parsifal wrote: > > Thanks Herman, > Can you please clarify it with example how can I have a null order object? > Or how to have a nullable coloumn? Do you mean if the fk of order_id in > invoice will be nullable, then this is possible to have an invoice without > order? > -- You received this message because you are subscribed to the Google Groups "doctrine-user" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/doctrine-user. For more options, visit https://groups.google.com/d/optout.
