PHPixie用の新しいデータベースモジュールが完成しました

画像

今日、 PHPixieのデータベースアクセスモジュールのバージョン3.0の最新のテストを作成しました 。 始めたときは数週間しかかからなかったように見えましたが、実際には、最初は膨大な量のリファクタリングと書き直しのために約2か月続きました。 しかし、現在では、フレームワーク自体の外部でも使用できる拡張可能なライブラリがあります(つまり、他のフレームワークまたはCMSでの書き込みを強制される場合は、お気に入りのライブラリを持ち歩くことができます)。



ORMモジュールを完成させ、新しいAPIで動作するように既存のモジュールを調整した後、リリースします。 ただし、興味がある場合は、githubの3.0ブランチを調べることができます(ただし、ドキュメントがまだないことを警告する必要があります。ORMとともに表示されます)。 それでは、新機能を見てみましょう。



平均的なユーザーの観点から


MongoDBの論理条件を使用した高度なクエリのサポートについては、すでにここに書いていますが、このリンクをクリックするのが面倒な場合は、簡単な説明を以下に示します。MongoDBでは、「 )) 」、したがって、PHPixie自体が、要求を使用するような形式で要求をリードします。



クエリを構築するためのいくつかのアプローチが利用可能になりました。

$query ->where('name', 'Trixie') ->or_where('name', 'Tinkerbell') ->where_not('id', '>', 7) ->having('count','<', 5) ->or_having('count', 7); // : $query ->where('name', 'Trixie') ->_or('name', 'Tinkerbell') ->_and_not('id', '>', 7) ->having('count', '<', 5) ->_or('count', 7); //   _or      //(     'where'    'having')
      
      







ネストされたロジックへのいくつかのアプローチ:

 $query ->where('name','Trixie') ->_or(function($builder){ $builder ->_and('id',7) ->_or('id',5) }); //WHERE name = 'Trixie' OR ( id = 7 OR id = 5 ) //      //(     ,   EXT JS ) $query->where('name','Trixie'); $query ->start_where_group('or') ->_and('id',7) ->_or('id',5) ->end_where_group();
      
      







列を比較するための特別な演算子:

 $query->where('fairies.id','*=','pixies.id');
      
      







個別のパラメーターでSQLコード挿入を使用する機能:

 $expr = $this->db->expr('concat(name, ?)', array('test')); $query->where($expr, 'Trixietest'); //WHERE concat(name, ?) = 'Trixietest';
      
      







NULLであることを事前に知らずに、NULL値で文字列を検索します。

 $category_id = null; $query->where('category_id', $category_id); // WHERE category_id IS NULL //  WHERE category_id = NULL
      
      







JOINの難しい条件....おなじみの構文を使用してON:

 $query->join('pixies'); //     $query->on('fairies.id','pixies.id'); //     $query->on('fairies.count','*>','pixies.count');
      
      







上級開発者の観点から








コードはPHPUnitテストで完全にカバーされており、166個のテストと1151個の比較が可能です。



この投稿が完了した作業に私の喜びを伝え、ORMモジュールの最終リリースが遠くないことを願っています。



All Articles