問題タブ [notorm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 既存の PHP アプリ用の単純な ORM または DBAL が必要
既存の PHP アプリケーションの拡張に取り組んでいます。私にとって残念なことに、既存のアプリはめちゃくちゃです。これはすべて生の mysql_* 呼び出しを含むスパゲッティ コードです。うめき声。私が拡張している部分でそれを行うつもりはありません。
そこで、気軽に立ち寄って使い始められるDBALのシンプルなORMを探しています。望ましい機能:
- 既存のデータベース スキーマで機能する必要があります。最小限の追加構成を使用するか、追加構成を使用しないことが望ましいです。既存のデータベース スキーマは、既存の PHP コードと同じ品質です (適切な命名規則がない、正規化されていないなど)。Doctrine 2 のように、データベース スキーマを手動で注釈付きオブジェクト プロパティに変換するのに何日も費やしたくありません。
- 既存の生の mysql_* クエリと一緒に動作できる必要があります。Doctrine 2 や Propel のような水和 ORM が、スクリプトが背後でデータベース内のデータを手動で操作しているときにどのように動作するかはわかりませんが、きれいではないと思います。
- PHP 5.2.x で実行する必要があります。私は PHP 5.3 を使いたいと思っていますが、既存の 125,000 行のスパゲッティ コードの混乱を調べて、PHP 5.3 で動作することを確認することにまったく関心がありません。
- 関係は必要ありません。リレーショナル データにアクセスする必要があるいくつかの場所では、喜んでエクストラなどを呼び出し
find()
ますquery()
。 beforeSave
何らかのトリガー サポート ( 、 など)があればボーナス ポイントafterSave
。必須ではありませんが、あると便利です。
編集:誰かが私を悲惨な状態から解放してくれました。125,000 行のスパゲッティ コードがデータベース スキーマも変更することがわかりました。たとえば、どこかに追加のオプションを追加すると、大量の ALTER TABLE ステートメントが飛んでいきます。おそらく、このコードベースで 1 年分の TheDailyWTF を埋めることができるでしょう。したがって、もう 1 つの要件:
- データベース スキーマの変更に自動的に対応できる必要があります (列の追加など)。
いくつかのソリューションを検討してきましたが、要件を考慮してどれだけうまく機能するかはわかりません。Doctrine 2、RedBeanPhp などはすべて PHP 5.3 を必要とするため、アウトです。PHP 5.2.x 用の RedBeanPhp のレガシー バージョンがありますが、それが乱雑な既存のデータベース スキーマで機能するかどうかはわかりません。NotORM はデータを取得するのに問題ないように見えますが、既存のデータベース スキーマ用に構成できるかどうか、およびデータをデータベースに簡単に戻す方法がわかりません。
理想的には、シンプルなものが欲しいです。例えば:
または:
ヒントや代替ソリューションも大歓迎です!
php - notORM PHP ライブラリで仮想テーブルを作成する方法
notORM PHP ライブラリで仮想テーブルを作成する方法。例、次のようなSQLを作成したい:
php - NotORM: データを取得するには?
選択の使用に問題があります。ドキュメントを読んでみましたが、あまり明確ではありません。それについて話しているフォーラムはほとんどなく、非アクティブです。
簡単な選択をしたいので、試しました:
ただし、通常の実行時に得られる結果の行が表示されない NotORM オブジェクトが返されます。SELECT id, group_title FROM user_types WHERE id = 1
fetch() を使用してみましたが、使用方法がよくわかりません。洞察はありますか?
php - 動的クエリ検索
NOTORMを使用してクエリを生成していますが、アプリケーションでユーザーがフィールドや条件などを選択して、基本的にカスタムクエリを作成できるケースが1つあります。このようにして、ユーザーは「800を超えて費やした名=ジャックの人々」のようなレポートを生成できます。
このクエリを生成するためにNOTORMを使用していますが、NOTORMを使用していないアプリケーションの別の部分で使用できるようにクエリを保存したいと思います。生成されたクエリを取得する関数はありますか?
これは、クエリが生成および実行された後のNOTORMオブジェクトの外観です。
「where」と「parameters」を繰り返すある種のスクリプトを実行できますが、特にこれらの配列の順序が正しくないため、あまりエレガントではないようです(各「?」を次の項目に置き換えるなどの操作を行う必要があります)。 「パラメータ」で)... NOTORM関数はありますか?またはあなたが提案するよりエレガントな方法はありますか?
これは、最後のオプションにエレガントなものがある場合の「where」と「parameters」の部分です。
mysql - NotORMの参加と複数選択
NotORMと呼ばれるこのPHPDBライブラリを見ていて、そのドキュメントを読んだときに、結合のスタンドについて読んだことがあります。議論は基本的に、結合を使用した単一のSQLクエリのパフォーマンスと、複数の選択クエリを使用してDB抽象化レイヤーで結果を相互参照するパフォーマンスでした。
私は常に、複数のクエリを使用するよりも単一のクエリの方が優れている必要があることを知っていたので、NotORMのアイデアは私にとって新しいものでした。この「機能」を見たのはNotORMだけなので、これもわかりません。
これについてのご意見をお伺いしたいと思います。
どのクエリがより良く、より速いですか?
これ...
対...
この2番目の方法は本当に実用的ですか?
php - NotORM で JOIN を使用する
次のコードを試しています
http://sql-cross-queries.freexit.eu/dibi/notormからJOIN ステートメントを作成しましたが、役に立ちませんでした。私は何かを見逃していますか?
レポート (タイムスタンプ、インシデント ID、ロケーション ID)、インシデント (インシデント ID、インシデント ID、ロケーション ID)、およびロケーション (ロケーション ID、ロケーション名) があります。レポート、インシデント、および場所を結合して、タイムスタンプ、インシデント名、およびロケーション名を取得しようとしています。そこで、次のステートメントを使用しました。
しかし、それは何も返していません。ただし、次のステートメント:
レポートを返します。
php - NOTORM カスタム mysql 関数
既存のフィールドから計算されたカスタム値を選択するにはどうすればよいですか?
たとえば、生年月日を保存していて、mySql 関数から計算された年齢を選択したいと考えています。
php - PHP と大きな CSV ファイル
csvファイルを読み込むためにparsecsv.lib.phpというライブラリを使用していました。ただし、ファイルのサイズは大きくなり、約 30 MB になりました。このライブラリは、csv の内容全体を配列にロードしようとします。これは、100,000 を超える要素を持つ配列になります。これは明らかに良くないので、以下の独自のソリューションを展開しました。
これは、一度に 1 行ずつ読み取り、キーをヘッダーとして保存してから保存します。
私の質問は、保存メソッドに供給しているデータの量をチャンク化した場合、速度が向上するかどうかです。現時点では、一度に 1 つの配列しかありませんが、配列の配列をフィードして保存することができます。データをチャンク化する利点があるかどうかはわかりません。経験者なら誰でも洞察力がある
保存方法は次のとおりです。