• TP中关联模型的使用


    class BFinanceProduct extends Common
    {
    protected $pk = 'finance_product_id';
    /**
    * 关联机构
    */
    public function organs()
    {
    return $this->hasOne('BFinanceOrgan','organ_id','finance_organ_id');
    }

    /**
    * @desc 属性、属性值
    */
    public function attrValue(){
    return $this->belongsToMany('BFinanceAttrValue','BFinanceProductTypeAttr','finance_attr_value_id','finance_product_id');
    }

    /**
    * 金融类型
    */
    public function type()
    {
    return $this->hasOne('BFinanceType', 'finance_type_id', 'finance_type_id');
    }
    /**
    * @param $where
    * @param string $field
    * @desc 根据条件获取金融产品数据
    * @date 2020/5/26
    */
    public function getFinanceProductByCondition($where,$field='*',$order='sort desc'){
    $map=[];
    $map[] = ['is_del','=',0];
    $data = $this->getList($map,$field,$order);
    if(!$data->isEmpty()){
    $data->load(['type','organs','attrValue'=>['attrName']]);
    }
    return $data;
    }

    /**
    * @param $where
    * @desc 获取金融产品详情、关联数
    */
    public function getInfoByCondition($where){
    $info = $this->with(['organs','type','attrValue'=>['attrName']])->where($where)->find();
    if($info){
    $this->formatdata($info);
    return $info;
    }else{
    return null;
    }
    }

    }

    用金融产品的模型类作为例子:
    $data = $this->getList($map,$field,$order);
    查询列表的时候,每条数据对应的机构、分类都是一对一的关系所以用法如下
    $data->load(['organs','type']);

    对应的属性和属性值是多对多的关系,所以写法如下

    $data->load(['attrValue'=>['attrName']]);

    其中 type、organs、attrValue 方法定义了他们之前的关系,以及关联条件,避免了平时我们取出数据对数据关系的处理。


    其中注意isEmpty()的用法
    1.{} 2.[]
    只有第二种才能使用改方法判断。

    By:jff
  • 相关阅读:
    SQL每日一题(20200512)
    SQL每日一题(20200506)
    SQL每日一题(20200509)
    sql每日一题(20200423)
    Oracle内存全面分析
    dbms_output.put与put_line
    oracle xml操作
    超级强大的破解极验滑动验证码--讲解非常详细
    python开发---目录
    Flask大全
  • 原文地址:https://www.cnblogs.com/widgetbox/p/jiaofeifei.html
Copyright © 2020-2023  润新知