Hi everyone

Thanks for the replies. You can probably tell that I'm new to
Transfer. Let me try and paint a picture from the UI point of view.
The customer is filling out a form field with various text fields
relating to fields in the  gallery table. One of the form fields is a
drop down so they can select a product to link the gallery record to.
All I'm trying to do is save their data. Therefore I thought that to
do this I have to create a new gallery object, call all the setters
which relate to each text field and then somehow call a setter to pass
in the productId (which is a secondary key to the product table). It's
pretty simple and common UI scenerio, I'd be amazed if I had to go to
all that work of creating decorators. Another way of looking at it is
if you look at the XML below, when you are inserting a new Gallery
record how do you set a value into the ProductId field of the Gallery
table?

<object name="Gallery">
        <id name="GalleryId" column="galleryId" type="numeric"></id>
        <id name="TestField" column="TestField" type="string"></id>
        <manytoone name="Product">
                <link column="ProductId" to="Product"/>
        </manytoone>
</object>

@Paul, to be honest I thought that your suggestion of creating a new
product object and passing it to a setProduct method in order to
insert the Secondary Key would make sense. I'm just amazed that I have
to do all the extra work of creating a decorator. The whole point of
Transfer is to reduce the amount of code you right.

@Mark; don't get me wrong, I think Tranfer is great, it's probably
just me not having worked out how to do what I want to do. You are
right the setProductId doesn't make sense, I just put that in to try
and describe what I'm trying to do. I was thinking along the lines of
Paul's suggestion.

Cheers
Matthew

On Feb 20, 1:59 am, Paul Marcotte <[email protected]> wrote:
> Matthew,
>
> Transfer does not generate methods to create compositions based on your FK
> names.  Therefore, if you wish to use that convention, you must use a
> decorator and and behaviour to your BO.  You have two choices.
>
> 1.
>
> objGallery = transfer.getTransfer().new("Gallery");
> objProduct = 
> transfer.getTransfer().get("Product",form.Id);objGallery.setTestField("cat");
> objGallery.setProduct(objProduct);
> transfer.getTransfer().save(objGallery);
>
> 2.
>
> Add a method to your Gallery Decorator
>
> <cffunction name="setProductId" returntype="void" output="false"
> access="public">
>         <cfargument name="ProductId" required="yes" type="numeric" />
>         <cfset var product =
> getTransfer().get("Product",arguments.ProductId)>
>         <cfset getTransferObject().setProduct(product) />
>     </cffunction>
>
> If you go with option 2, I'd recommend a "get" method that returns the
> productId.
>
> Why does it work this way?  Tranfer ORM is an "object relational mapper", so
> one should make every effort to augment their thinking for table relations
> to object relations.  It's not easy.  I had a difficult time making the
> adjustment.
>
> Best of luck!
>
> Paul
>
> On Thu, Feb 19, 2009 at 4:31 AM, John Whish <[email protected]>wrote:
>
> > I find the getMemento method is really useful for debugging as you can see
> > what is persisted. Just do <cfdump var="#objGallery.getMemento()#" />
> > BTW: getMemento is ONLY for debugging :)
>
> --
> Paul Marcotte
> Fancy Bread - in the heart or in the head?http://www.fancybread.com
--~--~---------~--~----~------------~-------~--~----~
Before posting questions to the group please read:
http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer

You received this message because you are subscribed to the Google Groups 
"transfer-dev" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/transfer-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to