TP6的文档说的还是太模糊,例子也不典型,对小白来说太不友好了,纯靠试。这里记录下多对多关联查询怎么定义,以备以后查看使用,这里用的是实际项目的例子
中间表名:e_finance_warrant 模型对应为FinanceTypeModel
产品表名:e_bank_finance 模型对应为BankFinanceModel
产品类型表名:e_bank_warrant_type 模型对应为BankTypeModel
每个产品可对应多个产品类型,每个产品类型可以对应多个产品,多对多关联
1.e_bank_finance的模型为BankFinanceModel
BankFinanceModel代码
//银行关联
public function bankInfo(){
return $this->hasOne('BankModel','id','bank_id');
}
//产品类型多对多关联定义
public function wType(){
return $this->belongsToMany(BankTypeModel::class, FinanceTypeModel::class,'warrant_id','finance_id');
}
FinanceTypeModel代码:只需要继承Pivot即可
<?php
declare (strict_types = 1);
namespace app\admin\model;
use think\Model\Pivot;
/**
* @mixin \think\Model
*/
class FinanceTypeModel extends Pivot
{
//
protected $table = "e_finance_warrant";
}
方便查看,举个例子:查询代码
BankFinanceModel::where('id',49)->with(['bankInfo','wType'])->select()->toArray();