ホームページ > バックエンド開発 > PHPチュートリアル > laravelクエリビルダーDBまたはORM

laravelクエリビルダーDBまたはORM

WBOY
リリース: 2016-08-04 09:21:11
オリジナル
1563 人が閲覧しました

2 つの違いは何ですか? それぞれをどのようなシナリオで使用する必要がありますか?

返信内容:

2 つの違いは何ですか? それぞれをどのようなシナリオで使用する必要がありますか?

操作はシンプルで直感的であり、メンテナンスが容易であるため、すべての操作は ORM を通じて実行されます。実際の同時実行性がある場合は、最適化する必要はありません。 ORM の各メソッドの意味を理解する必要があります。そうしないと、たとえば、リストの他の内容を取得するために with を追加するなど、誤って多くの SQL が必要になる可能性があります。ジョイントテーブル。

私はlaravelを使ったことはありませんが、DBはSQLを直接書いてデータベースを操作するのに対し、ORMはオブジェクトを使ってデータベースを操作するという理解だと思います。

データベースの操作には SQL または ORM を使用できます。SQL はリレーショナル データベースのクエリ言語であり、SQL を理解して使用することが必須です。ただし、プログラム開発では現在、より人間らしい表現力を持つ OOP 思考が好まれていますが、SQL は OOP ほど表現力がありません。より優れた表現力を持つ言語は、人間によるコード ロジックの編成に役立ち、全体的な開発効率が定性的に最適化され、コードがより堅牢になり、バグが少なくなります。

SQL の大部分のデバッグは、ORM を使用したデバッグほど簡単ではありません。また、ORM は通常、異なるデータベース間で切り替えることができます。これが ORM の利点です。堅牢なシステムでは、間違いによる低レベルのエラーを効果的に回避できる ORM を使用する必要があります。ただし、ORM コードは統一されていません。laravel の ORM についてはよく知られているため、他のフレームワークでは直接使用できません。

この業界に長く携わっていない初心者の場合は、SQL をできるだけ使用してください。SQL は必然的に使用され、SQL を深く理解することが練習としてみなされるためです。すでに経験があると思われる場合は、エラー率を減らすことができる ORM を使用してください。

ORMのパフォーマンスが低いため、DBファサードを使用してデータベースを直接操作することを推奨します。

データクエリの場合、ORM は DB よりも劣りません。たとえば、最も基本的な SQL 分割ステートメントの最適化を使用します。 ORM の損失はコード レベルでのみ発生するため、問題にはなりません。

ORM は一般から中程度の複雑さのクエリに適しており、さまざまなモデル操作にも適しています。たとえば、リレーショナル ターゲットがある場合は、targets()->delete() などを直接使用してリレーショナルを実行できます。データ操作。

ORM でのソフト削除、時間フィールドの自動更新、フィールド保護、およびフィールド タイプの変換はすべて、一部の標準化された体系的なプロジェクトで役立ちます。


さらに、DB シナリオ: より複雑なクエリ ステートメント、トランザクション操作などは DB によって完了する必要があります。

DB は主にクエリ ビルダー (SQLBuilder) であり、データベース内でクエリを実行するために入力パラメータを SQL ステートメントに変換するのに役立ちます。これは、手動で SQL ステートメントを作成するのと本質的に同じです。

ORM は、データベース内のデータをオブジェクトおよびコレクション オブジェクトにマップするオブジェクト リレーショナル マッパー ツールです。基になるデータに触れる必要はなく、マップされたオブジェクトを開発のために直接呼び出すことができます。


DB は、高パフォーマンス要件または単純なビジネス ロジックを含むプロジェクトに適しており、ORM は複雑なビジネス ロジックを含むプロジェクトに適しています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート