thinkphp在关联模型中三表级联查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp在关联模型中三表级联查询相关的知识,希望对你有一定的参考价值。

在关联模型中怎么进行三个表的级联查询呢?

参考技术A

以下是伪代码,你参考下:

//以省市县为例

......
public getPR()
    echo "省份列表";

public getCI()
    $pID = isset($_GET[pid])?$_GET[pid]:-1;
    
    //数据库根据pid获取指定省下的市
    $list = $rs->where('...')->select();    
    echo "城市列表";

public getCO()
    $pID = isset($_GET[cid])?$_GET[cid]:-1;
    
    //数据库根据cid获取指定城市下的县区
    $list = $rs->where('...')->select();    
    echo "县区列表";


在模板中直接getPR的结果填充省份select,当省份select选中后ajax的调用getCI获取城市列表并填充城市select,城市select选中后调用getCO获取县区列表并填充县区select


按照以上思路实现就好了,希望能帮到你。

追问

谢谢 但这不是我想要的效果。

参考技术B 如果我没有理解错,你只要在 lib/model下定义 关联模型类,然后指定关联的主键,

如下:
class AccountsViewModel extends ViewModel

public $viewFields = array(
'Accounts' => array('siccode'=>'customerId', '_type'=>'LEFT'),
'Accountscf' => array('cf_670','cf_672','cf_673','cf_674','cf_677','cf_678','cf_1238','cf_1377','_on'=>'Accountscf.accountid=Accounts.accountid','_type'=>'LEFT'),
'FundAccount' => array('fundId''customerpackage','payway','consumamount','discount', '_on'=>'Accounts.accountid=FundAccount.account_id', '_type'=>'LEFT'),
'CRMEntity' => array('createdtime', '_on'=>'Accounts.accountid=CRMEntity.crmid'),
);



【_on 处写关联字段】追问

大神 我是个初学的渣渣,你这个、、、我有点不大懂啊 还是谢谢你

参考技术C 你好,你可以使用thinkphp当中的table方法.
实例代码:

$Model->Table(array('你的第一表'=>'第一个表的表名','你的第二个表'=>'第二个表的表名','你的第三个表'=>'第三个表的表名'))->where('status>1')->select();追问

我知道这个方法 不是我想要的效果 还是谢谢

追答

这个方法也不行吗?那你到底要什么方法?

追问

新建Model.class.php文件 关联模型

追答

哦.

参考技术D 把你的表字段列出来,另外你要达到什么效果追问

student(学生表【s_id】,【s_name】,【s_cid】),class(班级表【c_id】,【c_name】,【c_gid】),grade(年级表【g_id】,【g_name】)

我想写一个Modle.class.php文件,在里面写protected $_link。 在Action.class.php文件中写一个方法relation()出来。实现三个表的级联。

以上是关于thinkphp在关联模型中三表级联查询的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp5 的 belongsToMany 多对多关联用法

thinkphp 关联查询 怎么统计关联表查出来的数据数量

多表级联删除表数据特别慢

Java使用c3p0连接池完成多表级联查询

thinkphp5关联查询主表的每条数据在附表关联表中的最新的那条数据(因为附表里面关联的字段数据有多条)

thinkphp关联模型 condition关联条件怎么用,能说个例子吗