关于spModel的疑问,麻烦Jake大解惑。

#1 passionxlife

我们都知道,平时操作MYSQL的SQL语句时,如果需要跨库进行操作数据,只需要进行  “ 库名.表名” 这样子就可以了。今天用SP做到数据库这一步,发现卡壳了。

情况是这样子的,我有N个库(N>5),其中 A库为主库,大部分的表都在此库中。而B、C、D、E等库则是我无法进行变更的库,必须按照现有库名和结构进行操作。

现在我有一条操作指令集合,首先需要在主库A的表a1中插入一系列数据,然后在向B库插入一系列数据,然后在向C库插入一系列数据,我首先新建了一个 aModel.php 数据模型,设置 $pk='id'; $table='A';然后我在建立其他模型的时候不知道应该如何建立了,因为,没有设置库名的一项。那么不管我填什么表名,都是在默认的A库下操作。

我参考了以下手册中的相关解释,发现要用很多代码来定义。着实感觉麻烦。

能不能在 spModel中增加 public $libname;用来表示当前数据模型操作的是哪个库,如果为null则操作默认库。

希望Jake大能在百忙之中解答一下我的疑惑,不胜感激。

2012-12-18 22:41:20

#2 jake

稍微转变一下思路就行。
$table='库名.表名';

由于table是一个成员变量,所以可以动态修改。

$a = spClass("aModel");
$a->table = "B.Table";
$a->findxxxx
$a->table = "C.Table";
$a->findxxxx

PS: 一般做项目,绝少用多库(读写分离除外 ),多库一般是设计有问题。稍大项目都会要求提供接口进行数据访问。

2012-12-18 23:16:32

#3 passionxlife

jake 发表于 2012-12-18 23:16
稍微转变一下思路就行。
$table='库名.表名';
多谢jake大解惑,方法着实行之有效。又学了一招{:soso_e104:}

话说我这套系统是韩国棒子做的 - - 一共有8个库,一个功能对应了一个库,悲催。。。

2012-12-19 12:47:20

#4 passionxlife

jake 发表于 2012-12-18 23:16
稍微转变一下思路就行。
$table='库名.表名';
按照这个方法后,表前缀怎么办?直接写进去么?

2012-12-19 14:02:12

#5 passionxlife

jake 发表于 2012-12-18 23:16
稍微转变一下思路就行。
$table='库名.表名';
我仔细看了一遍spModel的源码,不知道这样写B库的表模型可不可以?
QQ截图20121219141331.jpg

2012-12-19 14:14:03

#6 jake

你试试就知道了,应该可以。主要是改tbl_name,而不是改table变量

2012-12-19 14:22:29

#7 passionxlife

jake 发表于 2012-12-19 14:22
你试试就知道了,应该可以。主要是改tbl_name,而不是改table变量
好的,感谢jake回复我。

2012-12-19 16:29:29