Teddy,

I figured as much (not having to call methods over and over again). I had originally done a separate query that did the joins. Thought there was a more "proper" way. Thanks for you help in this. I've got a better understand of it.

byron

Teddy Payne wrote:
João is right about this. I was trying to get Byron to understand everything else before I would suggest him playing with all the query objects. Reactor queries can be confusing for new Reactor users. You just beat me to the follow up email. =)

Teddy

On 7/25/06, *João Fernandes* <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:

    Guys,

    it would be easier to create a custom query with the outer join.

    It will be faster (a lot).

    *João Fernandes**
    **Dep. Informática - Área de Desenvolvimento**
    **Cofina** media

    **Avenida João Crisóstomo, Nº 72 . 1069-043 Lisboa PORTUGAL**
    **Tel (+351) 213 185 200 . Fax (+351) 213 540 370**
    ** [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>

    ------------------------------------------------------------------------

    *From:* [EMAIL PROTECTED]
    <mailto:[EMAIL PROTECTED]> [mailto:
    [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>]
    *On Behalf Of *Teddy Payne
    *Sent:* terça-feira, 25 de Julho de 2006 15:05
    *To:* [email protected]
    <mailto:[email protected]>
    *Subject:* Re: (LONG) Re: [Reactor for CF] SharedKey

    That looks right to me Byron.  =)

    Teddy

    On 7/25/06, *Byron Raines* <[EMAIL PROTECTED]
    <mailto:[EMAIL PROTECTED]>> wrote:

    Teddy,
        Right.  But that is for one record.  I need to do the same
    thing for
    all records in the staff table to produce the listing.  Hence my
    confusion.  So if I ran the code below, I would need to loop over all
    records in the staff table. ---------

    OK.  I think it just clicked.  Is this a proper way to do what I want?
    (Code edits preceded by ******)

    ColdFusion Code:

    <!--- load the reactor factory --->
    <cfset Reactor = CreateObject("Component",
    "reactor.reactorFactory").init(expandPath("reactor.xml ")) />

    <!--- get all records --->

    ******<cfset staffGateway = reactor.createGateway("staff") />
    ******<cfset qryStaff = staffGateway.getAll()>

    ******<cfoutput query="qryStaff">

    <!--- get the staffer record for the  staff person with the
    primary key
    on current row of the staff --->
    ******<cfset staffRecord =
    reactor.createRecord("staff").load(staffID=#qryStaff.StaffID#) />

    <!--- get the address record for the staffer record loaded--->
    <cfset staffAddressRecord = staffRecord.getAddress() />

    <!--- the isDirty method of the staffer's address link will tell
    you if
    an address record was found or not for the staffer --->
    <cfset badRead = staffAddressRecord.isDirty()>

    <cfoutput>
    <!--- display the staffer's name from the staff table' --->
    #staffRecord.getStafferName()#<br />

    <!--- if it was not a bad read of the address table for the staffer,
    display the address and state --->
    <cfif not badRead>
        <!--- get the address of the staffer from the address table --->
        #staffAddressRecord.getAddress_One()#<br />
        <!--- get the state of the staffer from the address table --->
        #staffAddressRecord.getState()#<br />
    </cfif>

    </cfoutput>

    Byron


    Teddy Payne wrote:
    > Byron,
    > Why would you need a query?  You created a one-to-one relationship in
    > your reactor.xml.  The sample code that I sent you will give you the
    > Address for a given staffer.
    >
    > The load() method creates the query to join the two tables together
    > when you set the primary key on the staff record.  That is time
    saving
    > of Reactor.
    >
    > Teddy
    >
    >
    > On 7/25/06, *Byron Raines* <[EMAIL PROTECTED]
    <mailto:[EMAIL PROTECTED]>
    > <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>> wrote:
    >
    >     Teddy,
    >         And there in lies my problem, I think.  From what I
    >     understand, the
    >     gateway works on a table.  When I use that method, I do not
    get direct
    >     access to the data in the other table that  has the "hasOne"
    >     relationship.  Right now I have to write a separate query that
    >     joins the
    >     two tables, use createGateway() on that query, then cfoutput as
    >     normal.
    >     My thought originally when I come across this thread was that if
    >     you do
    >     a createGateway, then a getAll() and the table has a "hasOne"
    >     relationship with other tables, shouldn't you be able to
    access the
    >     related table data without having to write a separate
    query?  If I
    >     have
    >     to write a separate query, so be it.  I was looking for a more
    >     efficient
    >     way to display a listing of data from 2 related tables.
    >
    >     Thanks for you patience on this.
    >
    >     Byron
    >
    >     Teddy Payne wrote:
    >     > Byron,
    >     > Displaying all staff records would be a gateway.
    >     >
    >     > <cfset Reactor =
    >     >
> CreateObject("Component","reactor.reactorFactory").init(expandPath("reactor.xml
    >     > ")) />
    >     > <cfset staffGateway = reactor.createGateway("staff") />
    >     > <cfset qryStaff = staffGateway.getAll()>
    >     >
    >     > qryStaff returns a query object, so you can use cfoutput or
    >     cfloop if
    >     > you like.
    >     >
    >     > I recommend reading http://livedocs.reactorframework.com/
    <http://livedocs.reactorframework.com/>
    >     >
    >     > This is covered in the "Reactor Crash Course" portion of
    the left
    >     > navigation.
    >     >
    >     >
    >     > On 7/24/06, *Byron Raines * <[EMAIL PROTECTED]
    <mailto:[EMAIL PROTECTED]>
    >     <mailto: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>
    >     > <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
    <mailto: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> >> wrote:
    >     >
    >     >     Thanks, Teddy.  That's really helpful.  Esp. the info
    on isDirty
    >     >     (hadn't
    >     >     got that far).  Now to take this further.  To display all
    >     staff in the
    >     >     table, would I need to <cfloop> over all the records?  Is
    >     this the
    >     >     most
    >     >     efficient way? or is there another way?
    >     >
    >     >     Thanks again.
    >     >
    >     >     byron
    >     >
    >     >     Teddy Payne wrote:
    >     >     > Byron,
    >     >     > As promised, here is the reactor snippet.  The
    reactor.xml was
    >     >     located
    >     >     > in my webroot in a folder called sample.  I created a
    >     mapping to
    >     >     > sample/data folder to store the generated reactor
    objects.
    >     >     >
    >     >     > I also included a basic logic to detect if you have found
    >     an address
    >     >     > for a given staffer.
    >     >     >
    >     >     > Reactor.xml:
    >     >     > <reactor>
    >     >     >     <config>
    >     >     >            <project value="sample" />
    >     >     >            <dsn value="reactor" />
    >     >     >            <type value="mssql" />
    >     >     >            <mapping value="/sampleData" />
    >     >     >            <mode value="development" />
    >     >     >     </config>
    >     >     >
    >     >     >     <objects>
    >     >     >
    >     >     >         <object name="Staff">
    >     >     >             <hasOne name="Address">
    >     >     >                 <relate from="staffID" to="staffID" />
    >     >     >             </hasOne>
    >     >     >         </object>
    >     >     >
    >     >     >     </objects>
    >     >     >
    >     >     > </reactor>
    >     >     >
    >     >     > ColdFusion Code:
    >     >     > <!--- load the reactor factory --->
    >     >     > <cfset Reactor = CreateObject("Component",
    >     >     >
    "reactor.reactorFactory").init(expandPath("reactor.xml ")) />
    >     >     >
    >     >     > <!--- get the staffer record for the  staff person with
    >     the primary
    >     >     > key on the staff table of 1 --->
    >     >     > <cfset staffRecord =
    >     >     reactor.createRecord("staff").load(staffID=1) />
    >     >     >
    >     >     > <!--- get the address record for the staffer record
    loaded--->
    >     >     > <cfset staffAddressRecord = staffRecord.getAddress() />
    >     >     >
    >     >     > <!--- the isDirty method of the staffer's address link
    >     will tell you
    >     >     > if an address record was found or not for the staffer
    --->
    >     >     > <cfset badRead = staffAddressRecord.isDirty()>
    >     >     >
    >     >     > <cfoutput>
    >     >     > <!--- display the staffer's name from the staff
    table' --->
    >     >     > #staffRecord.getStafferName()#<br />
    >     >     >
    >     >     > <!--- if it was not a bad read of the address table for
    >     the staffer,
    >     >     > display the address and state --->
    >     >     > <cfif not badRead>
    >     >     >     <!--- get the address of the staffer from the address
    >     table
    >     >     --->
    >     >     >     #staffAddressRecord.getAddress_One()#<br />
    >     >     >     <!--- get the state of the staffer from the address
    >     table --->
    >     >     >     #staffAddressRecord.getState()#<br />
    >     >     > </cfif>
    >     >     >
    >     >     > </cfoutput>
    >     >     >
    >     >     > --
    >     >     > <cf_payne />
    >     >     > http://cfpayne.wordpress.com/ <
    http://cfpayne.wordpress.com/>
    >     >     > -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    -- -- --
    >     >     -- --
    >     >     > -- -- -- --
    >     >     > Reactor for ColdFusion Mailing List
    >     >     > [email protected]
    <mailto:[email protected]> <mailto: [email protected]
    <mailto:[email protected]>>
    >     <mailto:[email protected]
    <mailto:[email protected]> <mailto:[email protected]
    <mailto:[email protected]>>>
    >     >     > Archives at:
    >     http://www.mail-archive.com/reactor%40doughughes.net/
    <http://www.mail-archive.com/reactor%40doughughes.net/>
    >     <http://www.mail-archive.com/reactor%40doughughes.net/
    <http://www.mail-archive.com/reactor%40doughughes.net/>>
    >     >     > -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    >     -- -- -- --
    >     >     > -- -- -- --
    >     >
    >     >
    >     >     -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    -- --
    >     -- --
    >     >     -- -- -- -- --
    >     >     Reactor for ColdFusion Mailing List
    >     >     [email protected] <mailto:[email protected]>
    <mailto: [email protected] <mailto:[email protected]>>
    >     <mailto:[email protected]
    <mailto:[email protected]> <mailto:[email protected]
    <mailto:[email protected]>>>
    >     >     Archives at:
    >     http://www.mail-archive.com/reactor%40doughughes.net/
    <http://www.mail-archive.com/reactor%40doughughes.net/>
    >     >     < http://www.mail-archive.com/reactor%40doughughes.net/
    >     <http://www.mail-archive.com/reactor%40doughughes.net/
    <http://www.mail-archive.com/reactor%40doughughes.net/>>>
    >     >     -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    -- --
    >     -- --
    >     >     -- -- -- -- --
    >     >
    >     >
    >     >
    >     >
    >     > --
    >     > <cf_payne />
    >     > http://cfpayne.wordpress.com/ <http://cfpayne.wordpress.com/>
    >     > -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    -- -- --
    >     > -- -- -- --
    >     > Reactor for ColdFusion Mailing List
    >     > [email protected] <mailto:[email protected]>
    <mailto:[email protected] <mailto:[email protected]>>
    >     > Archives at:
    http://www.mail-archive.com/reactor%40doughughes.net/
    >     > -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    -- -- --
    >     > -- -- -- --
    >
    >
    >     -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    >     -- -- -- -- --
    >     Reactor for ColdFusion Mailing List
    >     [email protected] <mailto:[email protected]>
    <mailto:[email protected] <mailto:[email protected]>>
    >     Archives at:
    http://www.mail-archive.com/reactor%40doughughes.net/
    <http://www.mail-archive.com/reactor%40doughughes.net/>
    >     -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    >     -- -- -- -- --
    >
    >
    >
    >
    > --
    > <cf_payne />
    > http://cfpayne.wordpress.com/
    > -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    > -- -- -- --
    > Reactor for ColdFusion Mailing List
    > [email protected] <mailto:[email protected]>
    > Archives at:
    http://www.mail-archive.com/reactor%40doughughes.net/
    <http://www.mail-archive.com/reactor%40doughughes.net/>
    > -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    > -- -- -- --


    -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    -- -- -- -- --
    Reactor for ColdFusion Mailing List
    [email protected] <mailto:[email protected]>
    Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
    <http://www.mail-archive.com/reactor%40doughughes.net/>
    -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    -- -- -- -- --




-- <cf_payne />
    http://cfpayne.wordpress.com/
    -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    -- -- -- -- --
    Reactor for ColdFusion Mailing List
    [email protected] <mailto:[email protected]>
    Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
    <http://www.mail-archive.com/reactor%40doughughes.net/>
    -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    -- -- -- -- --


    -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    -- -- -- -- --
    Reactor for ColdFusion Mailing List
    [email protected] <mailto:[email protected]>
    Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
    -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    -- -- -- -- --




--
<cf_payne />
http://cfpayne.wordpress.com/
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Reactor for ColdFusion Mailing List
[email protected]
Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --


-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Reactor for ColdFusion Mailing List
[email protected]
Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

Reply via email to