thinkphp を使用して開発する場合、関連クエリを使用する必要がある狀況によく遭遇します。関連クエリを?qū)g行するとき、條件は多くの場合注意が必要な點です。
この記事では、thinkphp で関連クエリを?qū)g行するときに條件を使用してフィルターする方法を紹介します。
- モデルでの関連付けの定義
関連付けられたクエリを?qū)g行するときは、最初にモデルで関連付けを定義する必要があります。ここでは 1 対 1 の関係を例に挙げます。まず、hasOne アソシエーションを含む User モデルを定義します。
class?User?extends?Model { ????protected?$table?=?'users'; ????public?function?profile() ????{ ????????return?$this->hasOne('Profile'); ????} }
上記のコードでは、profile という名前のモデルに関連付けられる、profile という名前の hasOne アソシエーションを定義します。 Profile モデルでは、belongsTo 関連付けを定義する必要があります。
class?Profile?extends?Model { ????protected?$table?=?'profiles'; ????public?function?user() ????{ ????????return?$this->belongsTo('User'); ????} }
上記のコードでは、user という名前のbelongsTo 関連付けを定義し、User という名前のモデルに関連付けます。
- 関連クエリの実行
関係を定義した後、コントローラーで関連クエリを?qū)g行できます。クエリ ステートメントは次のとおりです。
$users?=?User::with(['profile'?=>?function($query){ ????$query->where('age',?'>=',?18); }])->select();
上記のコードでは、 with メソッドを使用して関連クエリを?qū)g行します。このうち、最初のパラメータはクエリしたい関連付けを渡し、2 番目のパラメータはこのクエリに追加の條件付き制限を課すために使用されるコールバック関數(shù)です。
上記のコードでは、where メソッドを使用してプロファイル モデルの年齢屬性をフィルターし、年齢が 18 以上のレコードのみをクエリしました。
- 連鎖操作條件
with メソッドでコールバック関數(shù)を渡してクエリ條件を制限するだけでなく、関連するクエリを?qū)g行するときに連鎖操作條件を?qū)g行することもできます。 。たとえば、次のコードは、ユーザー テーブル內(nèi)の年齢が 18 歳以上のユーザー、およびプロファイル レコード內(nèi)のアドレスが空ではないレコードに対するクエリを?qū)g裝します。
$users?=?User::where('age',?'>=',?18) ?????????????->with(['profile'?=>?function($query){ ?????????????????$query->where('address',?'<>',?''); ?????????????}]) ?????????????->select();
上記のコードでは、まず、where メソッドを使用します。クエリ條件は User モデルに対して制限されます。次に、with メソッドのコールバック関數(shù)を使用して、プロファイル モデルのクエリ條件を制限しました。
- 概要
thinkphp で関連クエリを?qū)g行する場合、with メソッドを使用して関連クエリを?qū)g行し、コールバック関數(shù)またはチェーン操作條件をクエリ結(jié)果に渡すことができます。さらに制限され、フィルタリングされます。
もちろん、関連クエリを?qū)g行するときは、関連関係の定義、クエリ ステートメントの記述など、その他の詳細(xì)にも注意する必要があります。実際の開発プロセスでは、狀況に応じて柔軟な運(yùn)用を行う必要があります。
以上が條件を使用して thinkphp 関連のクエリをフィルタリングする方法の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

ホットAIツール

Undress AI Tool
脫衣畫像を無料で

Undresser.AI Undress
リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover
寫真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中國語版
中國語版、とても使いやすい

ゼンドスタジオ 13.0.1
強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)