Yii フレームワークでのデータクエリ: データに効率的にアクセスする

王林
リリース: 2023-06-21 11:22:39
オリジナル
1039 人が閲覧しました

Yii フレームワークは、Web アプリケーション開発のプロセスを簡素化するための多数のツールとコンポーネントを提供するオープンソースの PHP Web アプリケーション フレームワークであり、その重要なコンポーネントの 1 つがデータ クエリです。 Yii フレームワークでは、SQL に似た構文を使用してデータベースにアクセスし、データを効率的にクエリおよび操作できます。

Yii フレームワークのクエリビルダーには、主にアクティブ レコード クエリ、クエリ ビルダー クエリ、コマンド クエリ、独自の SQL クエリのタイプが含まれています。この記事では、初心者が Yii フレームワークでデータクエリを使用する方法をよりよく習得できるように、これらのクエリビルダーとその使用方法を 1 つずつ紹介します。

  1. アクティブ レコード クエリ

アクティブ レコード モードは、Yii フレームワークで最も一般的に使用されるデータ アクセス モードの 1 つであり、次のことを可能にするオブジェクト指向インターフェイスを提供します。オブジェクト指向のインスタンスと同じように、データベース内のデータを操作します。 Yii フレームワークでは、各 Active Record クラスがデータベース テーブルに対応し、クラスの静的メソッドを呼び出すことでテーブル内のデータにアクセスできます。

以下はアクティブ レコード クエリの例です:

//创建一个Active Record对象 $post = Post::findOne(1); //输出该对象的属性 echo $post->title;
ログイン後にコピー

この例では、まずfindOne()## を使用してPostクラスを作成します。 # メソッド 属性のインスタンス。実際の開発では、通常、データのフィルタリング、並べ替え、ページングなどの操作を実行する必要があります。 Yii フレームワークは、これらの関数を実装するための豊富なメソッドを提供します。たとえば、where()メソッドを使用してフィルター条件を追加し、orderBy()

メソッドを使用して並べ替え方法を指定し、

limit()メソッドを使用できます。返されるレコードの数を制限するメソッド。offset()メソッドを使用して、返されるレコードの開始位置を指定します。以下に例を示します。

//查询标题包含“Yii”并且作者为“admin”的文章,并按照发布时间倒序排序,返回前10条记录 $posts = Post::find()->where(['like', 'title', 'Yii']) ->andWhere(['author' => 'admin']) ->orderBy(['created_at' => SORT_DESC]) ->limit(10) ->offset(0) ->all();
ログイン後にコピー
この例では、find() メソッドを使用してアクティブ レコード クエリ オブジェクトを作成し、次にwhere()

を使用します。

andWhere()メソッドは、タイトルに「Yii」が含まれ、作成者が「admin」という 2 つのフィルター条件を追加します。orderBy()メソッドは、ソートを指定するために使用されます。リリース時間の逆順;limit()メソッドを使用して、返されるレコードの数を 10 に制限します;offset()メソッドを使用して、返されるレコードの開始位置を指定します0件のレコード。最後に、all()メソッドを使用してクエリを実行し、要件を満たすすべてのレコードを返します。Query BuilderQuery

Query Builder は、Yii フレームワークで一般的に使用されるもう 1 つのデータ アクセス メソッドであり、SQL クエリ ステートメントを構築するためのチェーン コール メソッドを提供します。複雑なクエリ要件。 Yii フレームワークでは、
    Yii::$app->db->createCommand()
  1. メソッドを使用してクエリ ビルダー オブジェクトを作成し、そのオブジェクトの一連のメソッドを使用してビルドできます。クエリステートメント。
以下はクエリ ビルダー クエリの例です:

//创建一个查询构建器对象,并构建查询语句 $query = Yii::$app->db->createCommand() ->select('id, title, content') ->from('post') ->where(['like', 'title', 'Yii']) ->andWhere(['author' => 'admin']) ->orderBy(['created_at' => SORT_DESC]) ->limit(10) ->offset(0); //执行查询,并返回结果集 $posts = $query->queryAll();
ログイン後にコピー
この例では、最初にYii::$app->db->createCommand()# を使用します。 ## このメソッドはクエリ ビルダー オブジェクトを作成し、オブジェクトの

select()

from()

where()andWhere() を使用します。orderBy()limit()offset()などのメソッドは、クエリ ステートメントの構築に使用されます。最後に、queryAll()メソッドを使用してクエリを実行し、要件を満たすすべてのレコードを返します。クエリ ビルダーとアクティブ レコードの最大の違いは、クエリ ビルダーではモデル クラスを定義する必要がないため、統計クエリなどの単純なクエリ シナリオに適していることです。コマンドクエリ

コマンドクエリは、Yii フレームワークで最も独創的なデータアクセスメソッドであり、このメソッドを使用して、データを返す必要のない一部のデータベース操作を実行できます。結果セット。更新、削除、挿入など。 Yii フレームワークでは、

Yii::$app->db->createCommand()
    メソッドを使用して Command オブジェクトを作成し、その後
  1. execute()
  2. を使用できます。 SQL ステートメントを実行するオブジェクトのメソッド。

以下はコマンド クエリの例です:

//创建一个命令对象,并执行SQL语句 Yii::$app->db->createCommand() ->update('post', ['status' => 1], 'author = "admin"') ->execute();
ログイン後にコピー
この例では、最初にYii::$app->db->createCommand()# を使用します。 ## メソッド Command オブジェクトを作成し、オブジェクトのupdate()

メソッドを使用して、

post

テーブル内のすべての

authorを " に変更する更新ステートメントを構築しました。 admin "レコードのステータス属性は 1 に更新されます。最後に、execute()メソッドを使用して更新ステートメントを実行します。元の SQL クエリ特殊なケースでは、アクティブ レコード、クエリ ビルダー、またはコマンド クエリでは処理できない複雑なクエリ ステートメントを実行する必要がある場合があります。現時点では SQL クエリを使用できます。 Yii フレームワークでは、Yii::$app->db->createCommand()

メソッドを使用して Command オブジェクトを作成し、その後
    setSql()
  1. を使用できます。オブジェクトのメソッド 元の SQL ステートメントを指定し、
  2. queryAll()
メソッドを使用してクエリを実行します。

以下は生の SQL クエリの例です:

//创建一个命令对象,并执行原始SQL查询 $connection = Yii::$app->db; $command = $connection->createCommand(" SELECT p.id, p.title, u.username FROM post p LEFT JOIN user u ON p.author_id = u.id WHERE p.status = 1 AND u.role = 'admin' ORDER BY p.created_at DESC LIMIT 10 OFFSET 0 "); $posts = $command->queryAll();
ログイン後にコピー

这个例子中,我们首先创建了一个Command对象,并使用setSql()方法指定一条原始的SQL查询语句。该语句将post表和user表进行左连接,查询出所有状态为1且用户角色为“admin”的文章,并按照发布时间倒序排序,返回前10条记录。最后,我们使用queryAll()方法执行该查询,并返回所有符合要求的记录。

总结:

在Yii框架中,我们可以使用多种方式来访问数据库中的数据,包括Active Record查询、Query Builder查询、命令查询和原始SQL查询。不同的查询构建器适用于不同的查询场景,我们需要根据实际需求来选择最合适的查询方式。通过本文的介绍,相信读者已经对Yii框架中的数据查询有了更深入的了解,希望对大家在实际开发中使用Yii框架有所帮助。

以上がYii フレームワークでのデータクエリ: データに効率的にアクセスするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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