この記事では、find findAllを使って指定されたフィールドを検索するYiiの実装方法をサンプル形式で示し、皆さんの参考に共有します。具体的な方法は以下の通りです
ご存知のとおり、次の方法が使用されます:
オブジェクトの配列とオブジェクト コレクションを見つけることができますが、すべてのフィールドのデータではなく、必要なフィールドのデータを見つけるにはどうすればよいですか?これは私が以前にやったことです:
他の人がバックグラウンドで次のようなことを書いているのを偶然見ました。この方法は非常に優れています:
テスト後、それが機能することが判明したため、find は次のことも行うことができます:
もちろん、これを行うのは絶対に安全ではありません:
次の方法も使用できます。同様に、findAll を使用してテストすることもできます。
結論:
もちろん、ページングが必要な場合は、新しい CDbCriteria を作成する必要があります。
この記事が Yii をデータベースプログラミングに使用するのに役立つことを願っています。
必要なデータを取得する 必要なデータを取得するための Model の標準メソッドをいくつか示します: findAll string $conditions array $fields string $order int $limit int $page int $recursive [$conditions Type: string] 取得条件、つまり、SQL の where 句は $conditions = "race = 'wookie' ANDthermal_detonators > 3" のようになります。 [$fields Type: array] 返したいすべてのプロパティを指定して、射影であるプロパティを取得します。 (注釈: ここでは、フィールドの親 SQL 名ではなく、属性のオブジェクト親名を使用しました。多くの PHPer は SQL と DTO に基づく開発モデルの方が馴染みがあると思いますが、導入の本来の意図の 1 つは、モデルはリレーショナル データベースをオブジェクト操作に変換するため、射影クエリはオブジェクトの特定の属性を取得するものとして理解する必要があります) [$order Type: string] ソート属性は [TODO: 複数の順序かどうかを確認する] によって順序の属性名を指定します。 order フィールドがサポートされる] [$limit Type: int ] 結果セットのデータ入力制限 [$page Type: int] 結果セットのページング インデックス、デフォルトでは最初のページが返されます [$recursive Type: int] recursive が1 より大きい整数の場合、モデルに関連付けられた他のオブジェクトが返されます。 (注釈: Hibernate などの ORM ツールを使用したことがある場合、この属性が LazyLoad 属性であることを理解するのは難しくありませんが、完全に同じではありません。数値はカスケード クエリのレベル数を表します。たとえば、 user.country.city .address.id) find string $conditions array $fields string $order int $recursive find メソッドと findAll メソッドの違いは、findAll メソッドは一致するすべての結果セットを返し、find メソッドは一致する結果セットのみを返すことです。リストの最初の結果。
前提として、この属性はデータベースに対応するエンティティファイルに定義されている必要があります。