
私たちのチャットには、他の人にとって役に立つ質問への回答がしばしばあります。 さらに、 PHPixieには、あまりにも具体的であるため、ドキュメントには記載されていない興味深い機能が数多くあります。 このすべての情報が失われないように、主にすでにフレームワークを使用している人を対象とした「ヒントとコツ」のスタイルで一連の記事を始めます。 それでは、始めましょう。
ORMで任意のリクエストをラップする
標準SQLクエリをORMエンティティに変換する必要がある場合がありますが、これは非常に簡単です。
$result = $database->get()->execute('SELECT ....'); $loader = $orm->builder()->loaders()->dataIterator( $orm->repository('modelName'), $result ); // foreach($loader as $entity) { //.... } // $entities = $loader->asArray();
実際、この方法では、SQLクエリからだけでなく、任意のイテレーターや配列からもエンティティを取得できます。
$result = new \ArrayIterator([ ['id' => 1, 'name' => 'Pixie'], ['id' => 2, 'name' => 'Trixie'] ]);
SQLクエリロギング
データベースコンポーネントは、PSR-3ロガーをサポートしています。コンストラクタに渡すだけです。
$database = new \PHPixie\Database($config, new SomeLogger());
フレームワークを使用する場合、ロガーはProject\Framework\Builder
クラスで設定できます。
protected function buildLogger() { return new SomeLogger(); }
要求はDEBUGレベルで記録されます。
多対多の条件付きリンクの読み込み
manyToMany(およびすぐにoneToMany)接続のプレリュードでは、すべてのエンティティをロードできるわけではなく、条件を満たすエンティティのみをロードできます。
// active = 1 $fairies = $orm->repository('post')->query()->find([ 'author', 'tags' => [ 'queryCallback' => function($query) { $query->where('active', 1); } ] ]);
コントローラーでURLを生成するためのショートカット
$frameworkBuilder = $builder->frameworkBuilder(); $uri = $frameworkBuilder->http()->generateUri('app.some', ['id' => 1]);
非公式のFirebirdサポート
Linixbyに感謝します。PHPixieデータベースとORMはFirebirdでも動作します。 「秘密の機能」の段階であり、慎重に確認する必要がありますが、すでにバグの検索を試みて支援することができます。 接続するには、設定を指定するだけです:
return [ 'default' => [ 'driver' => 'interbase', 'database' => 'database', 'host' => 'localhost', 'user' => 'user', 'password' => 'password', 'type' => 'firebird' ] ];
本番環境では初期段階ですが、いくつかのリクエストを行うか、データベースをダンプする必要がある場合に役立ちます。
フィールドごとのエンティティの連想配列の取得
$items = $orm->query('post')->find()->asArray(false, 'someField');
ソーシャルの新しいプロバイダー
PHPixie Socialは、さらに多くのプロバイダーをサポートするようになりました:Dropbox、Facebook、Github、Google、Instagram、Twitter、Vkontakte( REZ1DENT3に感謝)
最後に、Techempowerからの新しいベンチマーク結果
PHPixieは、ORMを使用しないPhalcon iマイクロフレームにのみ、さらに大きなマージンでパフォーマンスをリードし続けています。
平文テストでは、マイクロフレームさえも追い越します。
今日はこれですべてです。将来、このスタイルが気に入ったら、別の記事を待ってください。 また、フレームワーク自体またはそのコンポーネントに興味がある場合は、お気軽にお問い合わせください。