問題タブ [dbal]
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.
data-access-layer - データベース抽象化レイヤーとデータアクセスレイヤーの違いは何ですか?
私は実際に3層構造で立ち往生しています。インターネットをサーフィンしたところ、「データベース抽象化レイヤー」と「データ アクセス レイヤー」という 2 つの用語が見つかりました。
2つの違いは何ですか?
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 はデータを取得するのに問題ないように見えますが、既存のデータベース スキーマ用に構成できるかどうか、およびデータをデータベースに簡単に戻す方法がわかりません。
理想的には、シンプルなものが欲しいです。例えば:
または:
ヒントや代替ソリューションも大歓迎です!
mysql - Doctrine カスタムデータ型
Symfony2 でアプリケーションを開発しています。Symfony2 は DBAL と ORM に Doctrine 2 を使用しています。私の知る限り、Doctrine2 は BLOB データ型をサポートしていません。ただし、カスタム データ型マッピングを介して BLOB サポートを実装したいと考えています。
http://www.doctrine-project.org/docs/dbal/2.0/en/reference/types.html
しかし、私はこの部分がどこに行くべきかを理解するのに苦労しています.
誰かがそれを経験していましたか?
BLOB タイプが必要な理由は、既存の MySQL データベースからマッピングをインポートしたいからです。
php - Doctrine2 DBAL の優れた代替 DBAL
Docrine2 DBAL を使用するようにセットアップされた単純なアプリケーションがあります。問題は、php 5.2.6 のみをサポートするホストで実行する必要があることです。Doctrine には PHP 5.3 が必要です...
PHP用の良い代替データベース抽象化レイヤーは何ですか? 単純にすべてを PDO に変換する必要がありますか? または、他に良いオプションはありますか?
ありがとう。
php - doctrine:build--dbを拡張してDBビューを作成する
私はDoctrine1.xとDoctrie_View(ネイティブMySQLビューのインターフェースとして)を使用する価値のある機能を備えたSymfony1.4プロジェクトに取り組んでいます。
私が理解しているように、ビュー(MVCのビューではなくDBビューの場合)は、Doctrineがビューとそれが派生した元のモデルとの間の関連付けを維持できるようにDoctrineで作成する必要があります。
symfony doctrine:build --db
理想的な世界では、タスクの一部としてビューを作成してもらいたいと思います。これを行うための賢明な方法は、オブザーバーパターンとSymfonyのイベントディスパッチャーを使用することですが、組み込みイベントのリストは、データベーススキーマが構築されたときのイベントを提供していないようです。
では、スキーマの構築時にDoctrineビューを作成するための最良の方法は何でしょうか。
または、それがオプションでない場合は、ビューが存在しないかどうかを確認してから、ビューの一部として作成しProjectConfiguration::configureDoctrine()
ますか?
php - Doctrine DBALを使いたい
Doctrine DBAL を使用したいので、サイトから DBAL フォルダーをダウンロードしました。フォルダーをサーバーに配置します。そして、このコードを私のファイルに書きます。
このエラーが発生しています。
dbal を使用するために必要なものを提案してください。
ありがとう
php - フレームワークに適したデータベースシステムを選択する
最近、MVCベースのフレームワークに取り組んでいます。フレームワークは現在半分完成しており、使用するデータベース抽象化レイヤーを検討している段階にあります。
私のプロジェクトのほとんどでは、通常、親クラスとしてPDOを使用し、いくつかの統合されたヘルパー関数を備えたカスタム構造を持っています。
しかし、私は時代にとらわれなければならず、ORMは最近のDBALで大きくなるはずですが、私はそれを使用したことがありません。ORMの概念を理解していて、かなり甘いと思いますが、私は何をすべきかについて固執しています。
私のフレームワークソースはここから入手できるので、システムのタイプを確認できます。DBALはありません。現時点では、モデルローダーなどだけです。
私が知っていることに固執し、適切な測定のためにいくつかの追加機能を投入したPDOを使用する必要があります。
または、未知のものに挑戦してORMベースのDBALを使用する必要があります。冒険するべきだと提案された場合は、それを使用することに関していくつか質問があります。
まず、StackOverflowには「最高のORM」に関する質問と回答がたくさんあることを知っていますが、次のことを念頭に置いて、何を提案しますか?
- 軽量で十分にテスト済み
- モデルと統合できる
- ドライバーの幅広い選択肢があります
- 独自のスコープを持っているか、少なくともベンダー名のプレフィックスが付いています
私はRedBeansを見てきましたが、そこの概念は気に入っていますが、モデルの外では到達できない機能がたくさんあります。
あなたのアドバイスは何ですか?
php - PHPbbDBALは正しいPHPとSQLの実行を拒否します
あなたがこれを見ているなら、あなたはおそらく私の最後の質問を見たでしょう。
だからそこから私は進歩を遂げました。SQLは問題なく、問題を引き起こしているのはPHPbbのDBALであることに気づきました。また、dbalクラスなどを開始するusercakeを使用していることにも注意してください。何らかの理由で、次のコードが機能します。
しかし、このコードはそうではありません:
テーブルの詳細FUideas
については、私の以前の投稿を参照してください。
プレーンphpを使用するとSQLが実行されるため、SQLが機能することはわかっています。
これを修正する方法は大歓迎です
さらに情報が必要な場合は、私もオンラインになりますので、テストを試みたい場合は、コードを投稿してください。
編集
したがって、他のフィールドにa0
または''
を入力すると機能するようになります。誰かがこの動作を説明できますか?
php - Doctrine DBAL の使い方は?
私はこのフォルダ構造を持っています
そして、ドキュメントでコードを試します
そして、私は警告を受け取ります:
そしてエラー:
PHP名前空間についてはよくわかりません。PHP マニュアルで PHP 名前空間について読んでも、まだ問題を解決できません。そのディレクトリ構造で Doctrine DBAL を使用したい場合、そのコードは正しいですか?
php - DoctrineDBALトランザクション
DBALでトランザクションを実行する方法がよくわかりません
行のIDに応じて列を更新する次のスクリプトを実行しています。テーブルに存在しない偽のIDを入力しましたが(したがって、更新を実行できなくなります)、トランザクションであるにもかかわらず、最初の更新がコミットされます。いずれかのトランザクションが失敗すると、すべてのトランザクションが失敗することを期待しています。
期待される結果、id = 120の行が存在しないため、更新はありません実際の結果、存在しない行を除くすべての行が更新されます。
事前にお詫び申し上げますが、オブジェクト指向プログラミングはまだ南極大陸です。