Example #1
0
 protected static function set_query_info(OOP_ORM_Data $obj, OOP_ORM $finder, $config)
 {
     # WHERE
     if ($config['where']) {
         $finder->where($config['where']);
     }
     # MAPPING
     if ($config['mapping']) {
         foreach ($config['mapping'] as $k => $v) {
             $finder->where($k, $obj->{$v});
         }
     }
     # 绑定数据
     if (isset($config['bind']) && $config['bind']) {
         $finder->where($config['bind'], $obj->get_data_by_field_name($config['bind'], true));
     }
     if (isset($config['order_by']) && $config['order_by']) {
         foreach ($config['order_by'] as $k => $v) {
             $finder->order_by($k, $v);
         }
     }
     # OFFSET
     if (isset($config['offset']) && $config['offset'] > 0) {
         $finder->offset($config['offset']);
     }
     # GROUP BY
     if (isset($config['group_by']) && $config['group_by']) {
         foreach ($config['group_by'] as $item) {
             $finder->group_by($item);
         }
     }
     # ORDER BY
     if (isset($config['order_by']) && $config['order_by']) {
         foreach ($config['order_by'] as $key => $item) {
             $finder->order_by($key, $item);
         }
     }
     # IN
     if (isset($config['in']) && $config['in']) {
         foreach ($config['in'] as $key => $item) {
             $finder->in($key, $item);
         }
     }
     # LIMIT
     if (isset($config['limit']) && $config['limit']) {
         $finder->limit($config['limit']);
     }
     # LIKE
     if (isset($config['like']) && $config['like']) {
         $finder->like($config['like']);
     }
     # HAVING
     if (isset($config['having']) && $config['having']) {
         $finder->having($config['having']);
     }
     # 支持扩展所有的方法
     if (isset($config['other']) && $config['other']) {
         foreach ($config['other'] as $argv) {
             $k = array_pop($argv);
             call_user_func_array(array($finder, $k), $argv);
         }
     }
 }