Ok i'll try.

i'll let you know

Thank you very much

Il giorno giovedì 22 gennaio 2015 15:30:51 UTC+1, José Lorenzo ha scritto:
>
> Associations are already loaded, as you define them in the initialize() 
> method of the table.
>
> You can inspect the associations tree in a query by calling 
> $query->eagerLoader()->normalized($query->repository());
>
> On Thursday, January 22, 2015 at 2:47:35 PM UTC+1, Ernesto wrote:
>>
>> The "inspect the contain tree" way sounds better.
>>
>> i'll try to explain:
>>
>> With your method you will end up loading every belongsTo and hasOne 
>> association, even if not used.
>> The table i'm using right now has 3 belongsTo relationships but i need to 
>> show only one
>>
>> On the second hand: first level association are not always enough.
>> This worsen the problem quite a bit.
>> if i use your method i must recursively loop throug tables and theyr 
>> relationships, loading a ton of useless classes.
>>
>> What do you think?
>>
>> Il giorno giovedì 22 gennaio 2015 12:56:19 UTC+1, José Lorenzo ha scritto:
>>>
>>> The associations used in a find are represented in a Tree-like 
>>> structure. I guess in your case it will be more than enough getting the 
>>> first-level associations
>>> of type belongsTo and hasOne, as those are the only types that can be 
>>> represented in a html table (they are in the same level of nesting)
>>>
>>> So to get associations of a table of type belongsTo and hasOne:
>>>
>>> $firstLevelAssociations = 
>>> collection($mainTable->associations()->type('HasOne'))
>>>     ->append($mainTable->associations()->type('BelongsTo'));
>>>
>>> $schemas = [];
>>> foreach ($firstLevelAssociations as $association) {
>>>    $schemas[$association->property()] = $association->schema();
>>> }
>>>
>>> At the end of the loop you will have an array of property names pointing 
>>> to the table schema. So, finally:
>>>
>>> foreach ($schemas as $property => $schema) {
>>>    if ($singleResultFromQuery->has($property)) {
>>>         // Do stuff with the schema
>>>    }
>>> }
>>>
>>>
>>> This is one way to do it. The other way is inspecting the query object 
>>> to get the 'contain' tree. Let me know if you need to know more about it :)
>>> On Thursday, January 22, 2015 at 11:01:35 AM UTC+1, Ernesto wrote:
>>>>
>>>> what about getting all the associations used in a record set?
>>>>
>>>> Il giorno giovedì 22 gennaio 2015 10:02:02 UTC+1, José Lorenzo ha 
>>>> scritto:
>>>>
>>>>> foreach ($results as $result) {
>>>>>     $source = $result->source();
>>>>>     $sourceSchema = TableRegistry::get($source)->schema();
>>>>> }
>>>>>
>>>>> Usually all records in a result set are of the same table, so you on;y 
>>>>> need to do that for the first result.
>>>>>
>>>>> If you have associations, then you can get the property in the result:
>>>>>
>>>>> $associationSource = $result->association_property->source();
>>>>>
>>>>>
>>>>> On Thursday, January 22, 2015 at 9:07:31 AM UTC+1, Ernesto wrote:
>>>>>>
>>>>>> Hi all
>>>>>>
>>>>>> i'm migrating an HtmlTableHelper from a Cake 2.x project to  new 3.0 
>>>>>> one
>>>>>>
>>>>>> The main function of this helper scans the array of data passed as 
>>>>>> argument and uses ClassRegistry to obtain schemas for each Model.field.
>>>>>> Later on these informations are used to format the TDs (text fields 
>>>>>> justified to the left, number fields justified to the right and so on).
>>>>>>
>>>>>> in 3.0 data arrays are gone, replaced by resultsets.
>>>>>>
>>>>>> I tried to rewrite a similar approach but i'm struggling with Cake's 
>>>>>> new ORM
>>>>>>
>>>>>> what's the best way to get source table and schema of each field in a 
>>>>>> recordset?
>>>>>>
>>>>>> Thank you very much
>>>>>>
>>>>>>
>>>>>>

-- 
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

--- 
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.

Reply via email to