検索

ホームページ  >  に質問  >  本文

php - ORMを使用する理由とORMの本質

インターネットで見つけた説明は、データベースの切り替えを容易にし、SQL の作成を避けるためのものです。この 2 つがよくわかりません。
1 つ目は、データベースを切り替えるということは、mysql を SQL サーバーに切り替えるような意味ですか? ただし、テーブル構造が同じである限り、ネイティブ SQL とクエリ コンストラクターは必要ありません。変えられること。

2 番目に、長い SQL の記述を避けます。クエリ コンストラクターでもこれが可能です。

クエリ コンストラクターと ORM の違いについては、クエリ コンストラクターは SQL を生成するクラスであるのに対し、ORM はテーブルにマップされ、フィールドがメンバー変数にマップされるクラスであると理解しています。もう一つ質問がありますが、テーブルとフィールドがたくさんある場合、ORM クラスは非常に冗長になるのではないでしょうか?私の理解が間違っているところを修正してください。

$user = DB::table('users')->where('name','Laravel')->first();//laravel クエリ コンストラクター

$posts = Post::where('id','<',3)->orderBy('id','desc')->take(1)->get();//laravel orm 
某草草某草草2799日前861

全員に返信(2)返信します

  • 为情所困

    为情所困2017-05-16 13:03:38

    おっしゃるとおり、テーブルとフィールドがたくさんある場合、ORM クラスは非常に冗長になります。

    ORM の本質は、データベース テーブルとテーブル間の関係をオブジェクトとオブジェクトの関係にマッピングすることです。このマッピング関係は双方向ですが、オブジェクト -> RDB の方向にはいくつかの問題があることに注意してください。 RDB のエンティティの記述は、Object のエンティティの記述ほど豊富ではないためです。

    あなたが挙げた 2 つの理由についての説明:

    1. データベースを切り替えるのは便利ですが、ORM にはそのような機能がありますが、実際のプロジェクトではデータベースを切り替えることは比較的まれなので、一般的ではないと個人的には思います。

    2. SQL の記述を避ける これは、プログラマーは怠け者で SQL を学びたくないため (SQL は簡単に学べますが)、ORM を使用する重要な理由です。また、これは ORM が最初に作成された重要な理由でもあります。

    3. 返事
      0
  • 某草草

    某草草2017-05-16 13:03:38

    簡単に答えますと、ORMはobject Relational Mappingの略で、オブジェクトはオブジェクト、リレーショナルは関係、マッピングはマッピングです。オブジェクト リレーショナル マッピングは非常に抽象的であるように見えますが、確かにそれは抽象的な概念です。プログラミング構文の観点から見ると、特にビジネス オブジェクトを操作する場合、複雑な SQL ステートメントを扱う必要はなくなり、オブジェクトのプロパティとメソッドを単純に操作するだけで済みます。

    それでは 2 つの質問に答えてください


    まず、mysql と sqlserver の間には多くの違いがあります。プログラムで使用する mysql_ で始まる関数は、sqlserver では認識されません。では、コードを変更せずに移行するにはどうすればよいでしょうか?

    第 2 に、ORM にはテーブルとクラス間のマッピングだけでなく、次のマッピング関係が含まれています。

    1. データベース内のクラスとテーブルのマッピング: データベース内の各テーブルはプログラミング言語のクラスに対応します

    2. テーブル内のオブジェクトとレコードのマッピング: リレーショナル データベース内のテーブルには複数のレコードが含まれる場合があり、各レコードはクラスのインスタンスに対応します

    3. クラスの属性とデータベースのテーブルのフィールド間のマッピング: データベースのテーブルのフィールドのデータ型とクラスの属性の型も 1 対 1 に対応します

    返事
    0
  • キャンセル返事