How to get ID of child-child object

Forum for posting problems using QxOrm library

How to get ID of child-child object

Postby nickla » Thu Aug 30, 2012 8:43 pm

I have following data structure: Order => Driver => Phone (order can have driver, driver has phone). I created assosiations using relationManyToOne. It works great. I fetch list of orders using fetch_by_query_with_all_relation function. When i try to get phone fields or phone ID my programm crashes.

Code: Select all
                           <OrderList class_id="14" tracking_level="0" version="1">
               <px class_id="15" tracking_level="1" version="0" object_id="_10">
                  <count>2</count>
                  <item class_id="16" tracking_level="0" version="0">
                     <first>109</first>
                     <second>
                        <px class_id="8" tracking_level="1" version="0" object_id="_11">
                           <AbstractObject class_id="17" tracking_level="1" version="0" object_id="_12">
                              <id>109</id>
                           </AbstractObject>
                           <updated_at class_id="18" tracking_level="0" version="0">20120831000813482</updated_at>
                           <booking_time>20120830193312301</booking_time>
                           <created_at>20120830193320402</created_at>
                           <driver_set_at></driver_set_at>
                           <client_called_at></client_called_at>
                           <place_from>????</place_from>
                           <place_to>test</place_to>
                           <discountcard>234</discountcard>
                           <description>?????? ?????</description>
                           <driver_wait_time>0</driver_wait_time>
                           <driver_firstname></driver_firstname>
                           <driver_lastname></driver_lastname>
                           <driver_patronymic></driver_patronymic>
                           <driver_callsign></driver_callsign>
                           <driver_auto_color></driver_auto_color>
                           <driver_auto_number></driver_auto_number>
                           <driver_auto_model></driver_auto_model>
                           <created_by class_id="19" tracking_level="0" version="1">
                              <px class_id="20" tracking_level="1" version="0" object_id="_13">
                                 <User class_id="21" tracking_level="1" version="0" object_id="_14">
                                    <AbstractObject object_id="_15">
                                       <id>112</id>
                                    </AbstractObject>
                                    <firstname>1234</firstname>
                                    <lastname>1234</lastname>
                                    <patronymic>1234</patronymic>
                                    <address>1234</address>
                                    <username>kna</username>
                                    <passwd>6d5a609a82b6361430dafa325b5badea</passwd>
                                    <phone_id class_id="22" tracking_level="0" version="1">
                                       <px class_id="-1"></px>
                                    </phone_id>
                                    <role_id class_id="24" tracking_level="0" version="1">
                                       <px class_id="-1"></px>
                                    </role_id>
                                    <status_id class_id="26" tracking_level="0" version="1">
                                       <px class_id="-1"></px>
                                    </status_id>
                                 </User>
                              </px>
                           </created_by>
                           <driver_set_by>
                              <px class_id="-1"></px>
                           </driver_set_by>
                           <client_called_by>
                              <px class_id="-1"></px>
                           </client_called_by>
                           <phone_id>
                              <px class_id="23" tracking_level="1" version="0" object_id="_16">
                                 <AbstractObject object_id="_17">
                                    <id>189</id>
                                 </AbstractObject>
                                 <caption>234</caption>
                                 <is_enabled>1</is_enabled>
                                 <order_deny_count>0</order_deny_count>
                                 <order_done_count>0</order_done_count>
                                 <order_missed_count>0</order_missed_count>
                                 <description></description>
                              </px>
                           </phone_id>
                           <status_id class_id="28" tracking_level="0" version="1">
                              <px class_id="29" tracking_level="1" version="0" object_id="_18">
                                 <AbstractObject object_id="_19">
                                    <id>1</id>
                                 </AbstractObject>
                                 <caption>??????</caption>
                                 <sort_order>1</sort_order>
                                 <has_driver>0</has_driver>
                                 <has_manager>1</has_manager>
                                 <manager_amount>3</manager_amount>
                                 <is_refund>0</is_refund>
                                 <is_create>1</is_create>
                                 <background_color>#FFFFFF</background_color>
                                 <code>created</code>
                              </px>
                           </status_id>
                           <driver_id class_id="30" tracking_level="0" version="1">
                              <px class_id="31" tracking_level="1" version="0" object_id="_20">
                                 <User object_id="_21">
                                    <AbstractObject object_id="_22">
                                       <id>169</id>
                                    </AbstractObject>
                                    <firstname>opop</firstname>
                                    <lastname>popo</lastname>
                                    <patronymic>opo</patronymic>
                                    <address>opo</address>
                                    <username>oopo</username>
                                    <passwd>7a120c191cd02d1c6686e657f54ec5e6</passwd>
                                    <phone_id>
                                       <px class_id="-1"></px>
                                    </phone_id>
                                    <role_id>
                                       <px class_id="-1"></px>
                                    </role_id>
                                    <status_id>
                                       <px class_id="-1"></px>
                                    </status_id>
                                 </User>
                                 <auto_model>op</auto_model>
                                 <auto_color>opo</auto_color>
                                 <auto_number>popop</auto_number>
                                 <callsign>455</callsign>
                                 <description></description>
                                 <balance>0</balance>
                                 <payed_period></payed_period>
                                 <tariff_id class_id="32" tracking_level="0" version="1">
                                    <px class_id="-1"></px>
                                 </tariff_id>
                              </px>
                           </driver_id>
                        </px>
                     </second>
                  </item>
               </px>
            </OrderList>


This happens b\c i can not get phone object if i fetch list of order. I understand why it is. I decided to collect phone object ID and to fetch it in different SQL query and to set it to order`s driver manually.

Problem is that i can not get phone ID from driver object. There is no such data object there!

I found how to solve this - i fetch all drivers and assign it to order. But i want to have ability to get object ID from child-child object. How can i do this?
nickla
 
Posts: 52
Joined: Wed Jul 11, 2012 4:19 pm
Location: Russia

Re: How to get ID of child-child object

Postby qxorm » Fri Aug 31, 2012 5:31 pm

Hi,

With the new relationship engine provided by QxOrm 1.2.4, you can fetch multiple levels of relations.
So you can fetch all Order => Driver => Phone with only one query.
More details in the FAQ here : http://www.qxorm.com/qxorm_en/faq.html#faq_270

fetch_by_query_with_all_relation is not the function to use to fetch multiple levels.
You have to use :
Code: Select all
qx::dao::fetch_all_with_relation("driver_key->phone_key", my_list_of_orders);
qxorm
Site Admin
 
Posts: 481
Joined: Mon Apr 12, 2010 7:45 am


Return to QxOrm - Help

Who is online

Users browsing this forum: No registered users and 5 guests

cron