时间:2021-05-25
背景:在一个mysql服务器上(注意:两个数据库必须在同一个mysql服务器上)有两个数据库:
memory (存储常规数据表) 中有一个 user 表(记录用户信息)
memory_stat (存储统计数据表) 中有一个 user_stat (记录用户统计数据)
现在在 user 表生成的 GridView 列表中展示 user_stat 中的统计数据
只需要在User的model类中添加关联
在GridView就可以这样使用来展示统计数据
现在增加了一个需求,需要在user GridView 列表中对统计数据进行排序和筛选
若 user 和 user_stat 表在同一个数据库下我们可以这样做:
UserSearch:
在GridView就可以这样使用来展示统计数据,就可以排序了
search 表单中添加以下列就可以筛选了
然而现实是残酷的, user 和 user_stat 表并在同一个数据库下。
于是就会报出这样一个错误:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'memory.user_stat' doesn't exist
The SQL being executed was: ...
要在两个数据库(同一台服务器)上进行关联数据查询,纯SQL语句如下:
复制代码 代码如下:
select a.*,b.* from memory.user as a,memory_stat.user_stat as b where a.id=b.user_id;
Yii2转化成 SQL 语句时默认不会在表明前添加数据库名,于是mysql在执行sql语句时就会默认此表在memory数据库下。
复制代码 代码如下:
select a.*,b.* from memory.user as a,memory.user_stat as b where a.id=b.user_id;
于是就出现了以上报错信息。
那么,如何来解决这个问题呢?
其实很简单,只需要重写 user_stat 的 model 类下的 tableName() 方法就可以了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
初探yii2框架,对增删改查,关联查询等数据库基本操作的简单实践。数据库配置。/config/db.php进行数据库配置实践过程中有个test库-》test表-
前言hasOne、hasMany是Yii2特有的用于多表关联查询的函数,平时在使用多表关联查询的时候建议使用它们。为什么?因为这种方式关联查询出来的结果会保留Y
本文实例讲述了Yii中的relations数据关联查询及统计功能用法。分享给大家供大家参考,具体如下:关联查询,Yii也支持所谓的统计查询(或聚合查询)。它指的
本文实例讲述了Yii2数据库操作常用方法。分享给大家供大家参考,具体如下:查询://findthecustomerswhoseprimarykeyvalueis
本文实例讲述了Yii2中关联查询用法。分享给大家供大家参考,具体如下:有两张表,post和category,post.cate_id对应category.id使