+ -
当前位置:首页 → 问答吧 → 切库问题,麻烦一下

切库问题,麻烦一下

时间:2011-10-17

来源:互联网

貌似用thinkphp切换数据库的操作有点繁琐,繁琐也就罢了。还连不通。拿官方的例子:
$db = new Db('mysql://root:123456@localhost:3306/test');
$db->table("blog");
却是个这样的错误,Call to undefined method Db::table()。很明显Db这个类里面没有table这个设置要操作哪张表的方法。那就去借助M方法吧。于是:
$blog = M();
$blog->db(1, 'mysql://root:123456@localhost:3306/test');
$blog->table("blog")->create();
那么dump($blog)返回一个空的数组。
检查了很多遍,表单的字段和数据库的也对应上了。
也许是缓存的问题吧。满怀希望的把RUNTIME给删除了,结果还是不行。
汗了。
怎么办呢?用最最最繁琐的方法吧。
$data['title'] = "title";
$data['info'] = "info";
$blog = M();
$blog->db(1, 'mysql://root:123456@localhost:3306/test');
$blog->table("blog")->add($data);
这个终于行了。
我提的这个问题在于哪呢?在于为什么第一种这样简单的方法不支持,为什么第二种方法用不了create,而第三种方法要写上$data这类要用$_POST这类代码来写。。。
哎!!~
有哪位高人,点醒一下吧。这个切库的操作还真是头疼。。

作者: adostorm   发布时间: 2011-10-17

$db = new Db('mysql://root:123456@localhost:3306/test');
$db->table("blog");
却是个这样的错误,Call to undefined method Db::table()。很明显Db这个类里面没有table
多数据切换可以使用高级模型下的SwitchConnect方法,使用 new Db()是没有table 方法的,可以直接写query或者execute操作
$blog = M();
$blog->db(1, 'mysql://root:123456@localhost:3306/test');
$blog->table("blog")->create();
那么dump($blog)返回一个空的数组。
create方法自动创建的数据必须是M对象下并已经获取到了字段的所有名称 ,使用dump($model)可以查看

个人愚见,不对之处望指正

作者: gaoxu387   发布时间: 2011-10-17