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]


From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Teddy Payne
Sent: terça-feira, 25 de Julho de 2006 15:05
To: [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]> 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]>> 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/
>     >
>     > 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]> >> 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]>>
>     >     > 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]>
>     <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/>>
>     >     -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>     -- --
>     >     -- -- -- -- --
>     >
>     >
>     >
>     >
>     > --
>     > <cf_payne />
>     > http://cfpayne.wordpress.com/ <http://cfpayne.wordpress.com/>
>     > -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>     > -- -- -- --
>     > Reactor for ColdFusion Mailing List
>     > [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]>
>     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/
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --




--
<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