問題タブ [database-abstraction]
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 - PHPPDOを使用したデータベース抽象化クラスの設計
私はWebアプリケーションを設計中です(実際、それは趣味であり、自分自身に設計を教えようとしています。それを行うよりも良い方法があります:)。とにかく、私は自分のデータベースをどのように扱うかを考えていました。私はPDOに慣れており、抽象化クラスでPDOを活用することを考えていました。データベース接続が1つだけになるように、シングルトンを作成することを考えています。このシングルトンは、PDO接続を作成します。
その後、なぜ他のことをしすぎる必要があるのかわかりません。次に、データベースハンドラーを使用してPDO関数を呼び出すことができます。いくつかのヘルパー関数が必要な場合もありますが、実際のSQLクエリにはPDOを使用します。
このアプローチに何か問題がありますか?私が使用した抽象化クラスと比較すると、非常に単純なようです。
php - データベースアクセス抽象化クラス
DB
現在、を使用するという名前のデータベースアクセスクラスがありますPDO
。次に、各テーブルにアクセスするためのサブクラスがいくつかあります。
Users
Images
Galleries
Text
Videos
これは私が最初にプロジェクトを開始したときは良かったのですが、これらの各クラス内で使用するデータベースクエリごとにメソッドがあるため、今ではそれが素晴らしいかどうかはわかりません。例えば:
さて、あなたはアイデアを得る。必要に応じてこれらのメソッドを追加してきました。開発では、DB
クラスを使用することから始めます。
そこで、DBクラスを使用してクエリをテストし、それらが機能しているときに、それに関連するクラスのメソッド(画像テーブルの場合は画像クラス、ギャラリーテーブルの場合はギャラリークラスなど)でクエリをラップします。
後で新しい機能を追加するにつれて、これはどんどん成長していくと思います(これは問題ないかもしれませんが、確かではありません)。誰かが私の方法を批評したり、代替ソリューションを提供したりできますか?
ありがとう!
php - Drupal でクロス データベース テーブル結合しますか?
drupal でデータベース間の結合を行うことは可能ですか?
2 つのデータベースがあるdrupal
としold_data_source
ます。に参加drupal.node
しold_data_source.page
ます。
db_set_active()
複数のデータベースを使用するために呼び出すことができます。ただし、データベース間のテーブル結合については何も見つかりません!
(移行スクリプトの一部としてこれを調査しており、削除する予定ですold_data_source
)
c++ - 「データの抽象化」とは正確にはどういう意味ですか?
データの抽象化とは何を指しますか? 実際の例を一緒に提供してください。
php - Codeigniter でのデータベース クエリによって返される結果の数をカウントする
Codeigniter のデータベース クエリがゼロの結果を返すタイミングを検出できません。私は PHP の count 関数に関する注意事項をよく読みましたが、賢明ではありません!
コントローラーから次のようにクエリ/ビューを呼び出します。
ビューは結果テーブルを生成しますが、空の結果をトラップしようとすると、カウントは常に 1 を返します。
私は試してみましたがif count(array($result))
、if count($result)
では、カウントを取得するための良い方法は何ですか? 開発用ラップトップで PHP 5.3.3 を搭載した Fedora 13 を使用しています。
php - PHP-ActiveRecord を symfony の ORM/抽象化レイヤーとして使用する方法はありますか?
自分の ORM を書くのに 1 か月近く苦労した後、PHP-ActiveRecord を発見したのはつい最近のことです (私はそのように頭が固いのです)。以前に Doctrine と Propel を見たことがありましたが、複雑さと学習曲線のために逃げることにしました。AR のおかげで、他の人たちと同じように不安や学習の難しさを感じることはありません。
その後まもなく、私は symfony フレームワークも発見しました (他のフレームワークが過度に肥大化していることを発見した後、ゼロから独自のフレームワークを作成しようとしていたこともありました)。ただし、問題が 1 つあります。Doctrine と Propel を ORM/抽象化レイヤーとしてそのまま使用する symfony フレームワークで、変更方法に関するドキュメントがありません。
symfony はまだ実際に使ったことがなく、「やさしい入門」という本を読んでいました。ORM/抽象化レイヤーは、symfony のコアからいくらか取り除かれているようで、すべてを変換するのに十分簡単なようです。質問は...そうですか?
symfony で ActiveRecord を使用したり、symfony で Doctrine/Propel 以外のものを使用した経験のある人はいますか?
php - Doctrine for PHPを使用する利点は?
オブジェクトリレーショナルマッパーとDB抽象化レイヤーを備えたDoctrineプロジェクトに出くわしました。Doctrineは、他のPHP抽象化レイヤーが提供しないものを提供しますか?また、Doctrineクエリ言語で記述されたクエリを介してオブジェクトをフェッチする以外に、ORMをどのように実用化できますか?クエリ言語は本当にWebアプリ全体を開発したいものですか?それはうまく機能しますか?
全体として、Doctrineでアプリを構築すると、保守と理解が容易になりますか?それは過剰に設計されており、中小規模のプロジェクトに適した抽象化レイヤー上に構築されていますか?(<50 GUI画面)、MySQLを直接操作するのとは対照的です。
php - Pear DB クラスが見つかりません
Pear Db クラスを使用して MySql データベースとやり取りするための Database.php というクラスを作成しました。
データベース.php
そして、サンプルファイルtest.phpからこのクラスを呼び出しています
test.php
test.php を実行すると、次のエラーが表示されます
警告: require_once(/usr/share/pear/DB.php): ストリームを開けませんでした: No such file or directory in /var/www/Avatar/Database.php on line 2 致命的なエラー: require_once(): 必要なファイルを開くのに失敗しました2 行目の /var/www/Avatar/Database.php の '/usr/share/pear/DB.php' (include_path='.:/usr/share/php:/usr/share/pear')
なぜこのエラーが発生するのかわかりません。phpinfo() で表示されますinclude_path .:/usr/share/php:/usr/share/pear .:/usr/share/php:/usr/share/pear
私は使用しており、パッケージをphp5
インストールしようとしましたが、それでも同じエラーが発生します。php-pear
ここで何が問題なのかわかりません。誰かが私を正しい方向に向けてください。
注: を使用して php5 をインストールしていませんsudo apt-get install php5
。Keryxアプリケーションを使用して php5 パッケージをダウンロードしました。
php - ビューのjavascript関数でモデルデータベースクエリを呼び出す方法は?
ユーザーメッセージングシステムのユーザー受信ボックスで、ユーザーが電子メールメッセージをお気に入りのメッセージにすることができる機能を構築しています。
メッセージモデルに2つのメソッドを作成しました。'messages'テーブルの'favourite'列の0を1に更新します。これは、ユーザーがメッセージをお気に入りにすることを意味します。また、ユーザーがクリックしてメッセージをお気に入りにする画像が灰色から色に変わります。
次に、ユーザーがメッセージをお気に入りにしないようにしたい場合は、これと同じプロセスを再度実行します。1が0に更新され、画像が再びグレー表示になります。
以下は、ボックスがチェックされている場合(画像がカラー)に基本的に何かを実行し、ボックスがチェックされていない場合(画像がグレー表示されている)に何かを実行する私のjquery/javascriptです。
私が理解しようとしているのは、モデルで2dbクエリを呼び出すための最良の方法です。
これを行うための最良の方法は何でしょうか?ビューでモデルを直接呼び出すのは悪い習慣ではありませんか?
では、どうすれば達成したいことを達成できますか?
コントローラーは仲介者として機能できますか?
もしそうなら、JavaScript関数でコントローラーを呼び出す方法はありますか?
私はいつもここで与えられたアドバイスに感謝します。前もって感謝します
php - PHPSQLクエリ構築エンジン
以下に指定されたいくつかの基準を満たすPHP用のクエリ構築エンジン( ORMではありません!)を探しています。残念ながら、Doctrine、Propel、Adodb、Zend_Dbなどを調べたところ、プロファイルに本当に適合するものは見つかりませんでした。抽象的すぎる(ORMレベルの抽象化は必要ありません)か、十分な機能をサポートしていません。 。必要なのは、SQLクエリをプログラムで作成できるライブラリです。実行する必要はありませんが、それでも問題ありません。
私は本当に車輪の再発明を避けたいので、プロファイルに合うものを知っているなら、それを前に持ってきてください。上記の名前のいずれかが当てはまると思われる場合(そして私はそれを見逃しました)、私にも教えてください。
持っている必要があります(ライブラリにない場合は、私には役立ちません):
- PHP 5.2をサポートします(残念ながら、名前空間ライブラリは現在使用できません)
- select式、order-by、limit、group-by、have、unions、outerjoinなどを含むプログラムによるクエリ生成をサポートします。
- Mysql、Oracle oci8、MSSQL、DB2、Postrgesをサポート
- 名前付きパラメーター化クエリとプリペアドステートメントの構築をサポート
- 任意の時点で動的に条件/結合を追加することをサポート
- 日時などのデータ型のサポート。たとえば、受信/送信データを適切にフォーマットしたり、必要に応じて適切な比較関数を使用したりします(もちろん適切な引用符も使用します)。コード内のすべてのフィールドのタイプがわかっているので、ライブラリは各フィールドが何であるかを示すことができるはずです。
- スタンドアロン(他のサポートクラスがなくても簡単に使用できます)
- 拡張が簡単で、ライセンスによりBSDのような条件で拡張できます
- クリーンなPHP5コード(PHP4のobject-by-refcruftなどはありません)
NICE TO HAVE(「必須」の上に実装することもできますが、すでに実行されている場合はもっと幸せになります)
- パラメータ化されたクエリのインスタンス化をサポート(完全および部分的)-つまり、クエリサポートを構築した後、パラメータの一部を提供し、それらのパラメータを置き換えて新しいクエリを生成します
- 2つのクエリのマージをサポートします(つまり、あるクエリから別のクエリに条件とテーブルを追加します)
- クエリコメントのサポート(パラメータ化を含む)
ボーナス(これは本当に私たちを幸せにするでしょうが、私たちは今のところそれなしで生きることができます)
- シリアル化をサポート
- キャッシングをサポート
それで、誰かがそのような図書館を知っていますか?