zoukankan      html  css  js  c++  java
  • php yii多表查询

    一个Company记录可以对应多个CompanyUser纪录
    Company表:

    [['id', 'nature_id', 'scale_id', 'pro_id', 'created_at', 'updated_at'], 'integer'],
    [['id','company_name'], 'required'],
    [['company_logo','company_desc','company_name','nature','scale','pro'], 'string']

    public function getCompanyuser()
    {
    return $this->hasMany(CompanyUser::className(), ['company_id' => 'id']);
    }


    CompanyUser表
    [['id', 'company_id', 'user_id'], 'integer']
    关系

    public function getCompany()
    {
    return $this->hasOne(Company::className(), ['id' => 'company_id']);
    }
    public function getUser()
    {
    return $this->hasOne(User::className(), ['id' => 'user_id']);
    }

    CompanyController.php

    function actionIndex() {
    $user_id = Yii::$app->user->id;
    $models = Company::find()->innerJoinWith(['companyuser'])->where(['user_id'=>$user_id])->orderBy(['created_at' => SORT_DESC])->asArray()->all();
    $data = [];
    foreach ($models as $model) {
    $data[] = $model;
    }
    return json_encode($data);
    }
    这样可以根据companyuser表的user_id设置条件查询

    -----------------------------------------------------------------------------------

    SellController.php
    $models = BuyRecord::find()->innerJoinWith(['d'=>function($query) {$query->andWhere('tp=1');}])->with('u')->where(['user_id_sell' => $user_id, 'status'=>1,'data_id'=>$dataid])->orderBy(['created_at' => SORT_DESC])->asArray()->all();

    BuyRecord.php

    public function getU()
    {
    return $this->hasOne(U::className(), ['id' => 'user_id']);
    }
    public function getD()
    {
    return $this->hasOne(Data::className(), ['id' => 'data_id']);
    }

  • 相关阅读:
    Python 字符串和list的功能翻译
    python .strip()
    python 查看对象功能
    python 字典
    洛谷 P1144 最短路计数 Label:水
    心疼自己,再见
    初赛复习 //附复习资料
    51Nod 1079 中国剩余定理 Label:数论
    转载 乘法逆元
    51Nod 1136 欧拉函数 Label:数论
  • 原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/4883207.html
Copyright © 2011-2022 走看看