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 多对多关联用法