faso-dev/osc-orm

这是一个小巧的PHP MySQL ORM或查询构建器。

v1.0.2 2020-02-09 18:24 UTC

This package is auto-updated.

Last update: 2024-09-14 21:31:10 UTC


README

这是一个小巧的PHP MySQL ORM或查询构建器。这是对小型项目的更新,不需要向数据库执行大多数查询。

要求

  • PHP 7.3
  • MySql 5.8
  • Composer

安装

  • 使用composer
            $ composer require faso-dev/osc-orm

使用案例

  • 我们需要将自动加载文件添加到您的应用程序入口点

        require_once __DIR__.'/vendor/autoload.php';
  • INSERT 使用

    • 使用查询插入构建器

            use FSDV\Persistance\ConnectionFactory;
            //if we have setting config dir in your project root
            // and it contain file named db_config.ini
            $conection = (new ConnectionFactory)
                              ->setConfig([
                                  'driver'    => 'mysql',
                                  'database'  => 'application_db',
                                  'host'      => '127.0.0.1',
                                  'username'  => 'root',
                                  'password'  => 'secret'
                              ])
                              ->create();
      
            $builder = new QueryInsertBuilder();
            // Build a sql query, just generate the query
            $query = $builder
                ->insertInTo('user')
                ->culums('name','username','mail','role')
                ->values('faso-dev','faso-dev','mail@mail.faso-dev','ROLE_SUPER_ADMIN')
                ->getQuery()
                ->getSQLQuery();
      
            // Build and commit the query on the database
            // We must give the conection instance to the query class to commit
            // query in the database
            $lastInsertId = $builder
                ->insertInTo('user')
                ->culums('name','username','mail','role')
                ->values('faso-dev','faso-dev','mail@mail.faso-dev','ROLE_SUPER_ADMIN')
                ->getQuery()
                ->setConnection($conection)
                ->save();
  • SELECT 情况

    • 使用查询选择构建器

            use FSDV\Builder\SelectBuilder;
            $builer = new SelectBuilder();
            try {
                // select max(user_id) as last_user;
                $query = $builer->max('user_id','last_user')->from('user')->getQuery()->getSQLQuery();
                var_dump($query);
                // select count(user_id) as count_user;
                $query = $builer->count('user_id','count_user')->from('user')->getQuery()->getSQLQuery();
                var_dump($query);
                 // select count(user_id) as total;
                $query = $builer->avg('panier_price','total')->from('user')->getQuery()->getSQLQuery();
                var_dump($query);
                 // select count(user_id) as somme;
                $query =$builer->sum('panier_price','somme')->from('user')->getQuery()->getSQLQuery();
                var_dump($query);
                $query = $builer->select()
                    ->from('user','post')
                    ->where('user.id = post.user_id and post.title LIKE %:title%')
                    ->setParameter('title', 'Mon super article')
                    ->orderByAsc(['user.nom'])->getQuery()->getSQLQuery();
                var_dump($query);
                $query = $builer->select()
                    ->from('user')
                    ->lefJoin('post', 'post.user_id = user.id')
                    ->where('post.title LIKE %:title%')
                    ->setParameter('title', 'Mon super article')
                    ->orderByDesc(['user.nom'])->getQuery()->getSQLQuery();
                var_dump($query);
                $query = $builer->select('username','mail','adresse')
                    ->from('user')
                    ->avg('achat')
                    ->groupBy('username','mail','adresse')
                    ->orderByAsc(['user.username'])->getQuery()->getSQLQuery();
                ;
                var_dump($query);
                $query = $builer->select('username','mail','adresse')
                    ->from('user')
                    ->paginate(200)
                    ->orderByDesc(['user.mail'])->getQuery()->getSQLQuery();
                ;
                var_dump($query);
            } catch (Exception $e) {
                echo $e->getMessage();
            }
  • UPDATE 情况

    • 使用查询更新构建器

          use FSDV\Builder\QueryUpdateBuilder;
      
          // build an update query
          $builder = new QueryUpdateBuilder();
          try {
              $query = $builder->update('user')
                  ->setCulums('name', 'lastname')
                  ->values('daniel', 'onadja')
                  ->where('(user.id = :user_id) OR (user.username = :username)')
                  ->setParameters([
                      'user_id'  => 1,
                      'username' => 'faso-dev',
                  ])
                  ->getQuery();
              //return sql string query
              $sql = $query->getSQLQuery();
              var_dump($sql);
              //execute the query
              $query->update();
          } catch (\Exception $e) {
              echo $e->getMessage();
          }
  • DELETE 情况

    • 使用查询删除构建器

          use FSDV\Builder\QueryDeleteBuilder;
          //build delete query
          $builer = new QueryDeleteBuilder();
          try {
              $query = $builer->deleteFrom('user')
                  ->where('user_id = :id and (username = :username or email = :mail)')
                  ->setParameters([
                      'id'       => 1,
                      'username' => 'faso-dev',
                      'mail'     => 'faso-dev@gmail.com',
                  ])
                  ->getQuery();
              //return sql string query
              $sql = $query->getSQLQuery();
              var_dump($sql);
              //execute the query
              $query->delete();
          } catch (Exception $e) {
              echo $e->getMessage();
          }