RedBeanPHP-別のORMライブラリ

RedBeanPHPロゴ

ハブで、このORMについていくつかの言及があり、それについても長い間、コメントで見つけました。 最近、2番目のバージョンがすでにリリースされていることが発見されました。 興味のある方のために- ダウンロードGitHub )とドキュメントへの リンク があります

この記事の目的は、読者にこのORMライブラリを簡単に紹介することです。

RedBeanPHPは別のORMライブラリです。 オブジェクトを手動で設定する必要がないため、PropelやDoctrineなどの同僚との主な違いはありません。 つまり xml、yml、iniファイルはありません。 RedBenPHPはその場でテーブル、フィールド、インデックスを作成します。 任意のオブジェクトを別のオブジェクトに関連付けることができます。 データベースから、MySQL、SQLite、Postgresがサポートされます。



TTX



ライブラリは1つのファイルで構成されます。 PHPバージョン5.3で作成されましたが、作者によると、5.2でも動作するはずです。 動作するには、PDOの拡張が必要です。



仕事の基本



RedBeanPHPはBeanで動作します。 手始めに、単にBeanを作成できます。 これは、パブリックプロパティとタイプを持つオブジェクトです。 Beanタイプは、データベース内のテーブルを照合するために使用され、オプションでクラスを示すために使用されます。 Beanは次の方法で作成されます。

$book = R::dispense( 'book' );
      
      





これで空のブック型Beanができました。 いくつかのプロパティを設定しましょう:

 $book->title = 'Boost development with RedBeanPHP'; $book->author = 'Charles Xavier';
      
      





そしてデータベースに保存します:

 $id = R::store($book);
      
      





これで、すべてのデータがデータベースに保存されました。 benaには文字列データを書き込む2つのプロパティがあるため、RedBeanPHPはこれらのプロパティにVARCHAR(255)型を選択しました。 プロパティのいずれかに番号を保存することにした場合($ book-> price = 100)、RedBeanPHPはこのプロパティを保存するためにTINYINT(3)タイプを選択します。 後で小数価格を維持する必要がある場合、RedBeanPHPはその場でデータベースのフィールドタイプを変更します。

データベースからロードするには、R :: load()メソッドを使用します

 $book = R::load('book', $id); $books = R::batch('book',array($id1,$id2));
      
      





データベースからの削除は次のように行われます。

 //   R::trash( $book ); //   R::wipe( 'book' );
      
      







豆検索



検索するには、R :: find()メソッドを使用します

 $needles = R::find('needle',' haystack = ?', array( $haystack ));
      
      





find()は、Beanタイプ、SQLクエリ、および2番目の引数の疑問符に置き換えられる値の配列の3つの引数を取ります。 疑問符の代わりに、名前付きパラメーターを使用できます。

 $needles = R::find('needle',' haystack = :haystack ORDER BY :sortorder', array( 'sortorder'=>$sortorder, ':haystack'=>$haystack ));
      
      





RedBeanPHPでは、 通常のSQLクエリ作成し、ビューを作成して使用し、 エンティティにタグを付ける ことができます



RedBeanPHPのリンク



オブジェクトのプロパティ自体をオブジェクトにすることができます。 RedBeanPHPでは、関連オブジェクトを保存できます。

 $farm = R::dispense('building'); $village = R::dispense('village'); $farm->name = 'farm'; $village->name = 'Dusty Mountains'; $farm->village = $village; //assign farm to village $id = R::store($farm);
      
      





そしてそれらをロードします

 $farm = R::load('building',$id); echo $farm->village->name; //prints 'Dusty Mountains'
      
      





一度に複数のBeanをバインドできます。

 list($mill,$tavern) = R::dispense('building',2); $village->ownBuilding = array($mill,$tavern);
      
      





$ villageを保存してデータベースから再度ロードすると、ownBuildingプロパティに関連するBeanが見つかります。 プロパティの名前は、保存されているBeanと一致する必要があります。 リンクを解除するには、unset()を使用します。 関連するBeanは、親から直接変更できます。

 $village->ownBuilding[1]->name = 'The Old Inn';
      
      





保管されたBeanにアクセスするには、保管されたBeanのIDを配列キーとして使用する必要があります。



その他



デフォルトでは、RedBeanPHPはフリーモードで実行されます。このモードでは、動作するコードに応じてデータベーススキーマが変更されます。 このモードは開発に最適です。 現時点では、データベースについて心配する必要はありません。 開発が完了したら、freeze()コマンドを実行する必要があります。

 R::freeze( true ); //will freeze redbeanphp
      
      





このコマンドは、RedBeanPHPのデータスキーマチェックを無効にし、作業の速度を向上させます。

私の意見では、便利なことは、キーによる配列からのBeanのインポートです。例えば:

 $book->import($_POST); $book->import($_POST, 'title,subtitle,summary,price');
      
      





ただし、検証は行われません。



読む



この記事は、本質的にRedBeanPHPマニュアルのいくつかのセクションの無料翻訳です。

このマニュアルでは、多対多の関係の整理、ツリー、モデルの作成と検証、RedBeanPHPのプラグインの作成、フレームワークとの統合に関するトピックも取り上げています。



All Articles