<?php 
 
include 'functions.php';
 
 
html_header('Subqueries Example');
 
 
 
echo 'Same example data';
 
showcode("
 
\$actors=array(
 
    array('name'=>'robert','surname'=>'de niro','films'=>100),
 
    array('name'=>'silvester','surname'=>'stallone','films'=>70),
 
    array('name'=>'julia','surname'=>'roberts','films'=>40)    
 
    );
 
");
 
 
 
 
echo 'A function to bind our query';
 
showcode("
 
function actors_find(\$sql){
 
    global \$actors;
 
    \$collection=\$actors;
 
    foreach(\$collection as \$item){
 
        \$checks=array();
 
        foreach(\$sql['with'] as \$k=>\$v){
 
            \$checks[\$k]=(\$item[\$k] == \$v)?true:false;
 
            }
 
        if(!in_array(false,\$checks)) \$out[]=\$item;
 
        }
 
    return (isset(\$sql['first']))
 
        ?array_shift(\$out)
 
        :\$out;
 
    }
 
");
 
 
 
echo "register the query model and bind it to a custom function";
 
showcode("apiql::register('!select/?first/!actor/!with[json]','actors_find');");
 
 
 
echo '<hr />';
 
 
$actors=array(
 
    array('name'=>'robert','surname'=>'de niro','films'=>100),
 
    array('name'=>'silvester','surname'=>'stallone','films'=>70),
 
    array('name'=>'julia','surname'=>'roberts','films'=>40)    
 
    );
 
 
//register query model
 
apiql::register('!select/?first/!actor/!with[json]','actors_find');
 
 
//my binding funciton
 
function actors_find($sql){
 
    global $actors;
 
    foreach($actors as $item){
 
        $checks=array();
 
        foreach($sql['with'] as $k=>$v){
 
            $checks[$k]=($item[$k] == $v)?true:false;
 
            }
 
        if(!in_array(false,$checks)) $out[]=$item;
 
        }
 
    return (isset($sql['first']))
 
        ?array_shift($out)
 
        :$out;
 
    }
 
 
 
 
echo 'execute query with 1 subquery';
 
showcode("\$finded=apiql::query('select actor with apiql::query(\"select actor with {name:robert}\")')");
 
$finded=apiql::query('select actor with apiql::query("select first actor with {name:robert}")');
 
showresults($finded);
 
 
echo '<hr />';
 
 
echo 'execute query with 1 subquery and a subquery in the subquery .... omg :-)';
 
showcode("\$finded=apiql::query('
 
    select actor with 
 
        apiql::query(\"
 
            select first actor with
 
                apiql::query(\'select first actor with {name:robert}\')
 
            \")
 
        ');
 
    ");
 
$finded=apiql::query('
 
    select actor with 
 
        apiql::query("
 
            select first actor with
 
                apiql::query(\'select first actor with {name:robert}\')
 
            ")
 
        ');
 
showresults($finded);
 
 
 
html_footer();
 
?>
 
 
 |