bill (請求書) とdetail (請求書詳細) の 2 つのテーブルがあります。
bill フィールド: billid (請求書 ID)、bildate (請求日)、total (合計金額)...
detail フィールド:detailid (詳細 ID)、bilid (請求書 ID)、amount (金額)、incometype (収入カテゴリ)...
2 つのモデルを構築します:
クラス Bill 拡張モデル {
//請求書詳細テーブルに関連付けられます
public functiondetail(){
return $this->hasMany('Detail', ' billid');
}
}
class Detail extends Model{
//請求書テーブルに関連付けられます
パブリック関数 bill(){
return $this->belongsTo('Bill', 'billid');
}
}
Q: モデルオブジェクトを使って請求明細の所得区分に応じた所得金額を計算したい場合、どのように書けばよいでしょうか?
明らかに、請求書詳細テーブルを現在のモデル、請求書テーブルを関連モデルとみなします。
関連付けられたテンプレートのデフォルトは内部結合クエリです。これを 2 つのステップに分けることをお勧めします:
1 つ目: 請求書 ID に従って、最初に関連するクエリを実行してすべての関連データを取得します。
2 つ目: 取得したデータを収入カテゴリに従ってグループ化し、次に統計演算を実行します。区別するためのエイリアスの使用法に注意してください。
操作を簡素化するためにクロージャクエリを使用することをお勧めします。
理解できない場合は、モデル関連付けクエリに関する公式マニュアルを詳しく見るか、フレームワークのソース コードの関連部分を参照してください:
https://www.kancloud.cn/manual/ thinkphp5/142358