QuerySelect

From OpenPSA Wiki

Jump to: navigation, search

QuerySelect is the successor to Query Builder and Midgard Collector. The main new features are that it supports JOIN operations.

[edit] Methods

toggle_readonly
include_deleted
list_objects
connect
set_constraint
set_offset
set_limit
add_order
add_join
execute
get_results_count

I love reading these atricles because they're short but informative.

[edit] Examples

        $storage = new midgard_query_storage('midgardmvc_core_node');
 
        /* By default we prepare to join core node and blob.
         * SELECT t1.id, ... FROM midgardmvc_core_node AS t1 JOIN blobs AS t2 ON t1.guid = t2.parent_guid WHERE t2.name='NAME';
         */ 
        $joined_storage = new midgard_query_storage('midgard_attachment');
        $left_property_join = new midgard_query_property('guid');
        $right_property_join = new midgard_query_property('parentguid', $joined_storage);    
 
        if (is_a($object, 'midgardmvc_core_node'))
        {
            /* Join nodes 
             * SELECT t1.id, ... FROM midgardmvc_core_node AS t1 JOIN midgardmvc_core_node AS t2 ON t1.id = t2.up WHERE t2.name='NAME'
             */ 
            $joined_storage = new midgard_query_storage('midgardmvc_core_node');
            $left_property_join = new midgard_query_property('id');
            $right_property_join = new midgard_query_property('up', $joined_storage);    
        }
 
        $q = new midgard_query_select($storage);
        $q->add_join("INNER", $left_property_join, $right_property_join);
 
        /* Set name constraint */
        $q->set_constraint(
            new midgard_query_constraint(
                new midgard_query_property('name', $joined_storage), 
                '=', 
                new midgard_query_value($object->name)
            )
        );
 
        $q->execute();
 
        /* Relative path is : $returnedobjects[0]->name / $object->name */
 
        return $q->list_objects();
    }


[edit] Weblinks

http://www.midgard-project.org/api-docs/midgard/php/ratatoskr/midgard_query_select.html
Personal tools