Teddy
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. =)
TeddyOn 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/
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
--
<cf_payne />
http://cfpayne.wordpress.com/
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Reactor for ColdFusion Mailing List
[email protected]
Archives at: http://www.mail-archive.com/reactor%40doughughes.net/
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
