- 59
- 0
1.使用DB门面操作数据库,因为项目中每个应用都会单独建立一个数据库,所以使用单例模式封装了一个类, 实例化这个类就可以操作对应数据库中的数据表。
但是出现的问题就是,第一次查数据的时候能查出来,第二次就无法查出数据了,需要重新实例化这个类
例如 :
//将这个单例类中的Instance置为null
$this->objModel->nullInstance();
//重新实例化类
$dbName = “xxxx11”;
$this->objFileModel = FileModel::init($dbName);
2.`
class FileModel
{
private $TableObj = null;
private $DbObj = null;
public static $instance = null;
/**
* 初始化数据表链接对象
* ImgModel constructor.
* @param null $dbName
*/
private function __construct($dbName = null)
{
try {
if (null == $this->TableObj) {
$dbInfo = array(
'driver' => 'mysql',
'read' => [
'host' => env('DB_READ_HOST', 'localhost')
],
'write' => [
'host' => env('DB_WRITE_HOST', 'localhost')
],
'port' => env('DB_PORT'),
'database' => $dbName,
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
);
Config::set("database.connections.cs_mysql", $dbInfo);
$this->DbObj = DB::connection('cs_mysql');
$this->TableObj = $this->DbObj->table("file");
}
}catch (\Exception $e) {
}
}
/**
* @param null $dbName
* @return FileModel|null
*/
public static function init($dbName = null) {
if (null == self::$instance || !isset(self::$instance)) {
self::$instance = new self($dbName);
}
return self::$instance;
}
public function getA($name) {
return $this->TableObj->where("name", $name)->get();
}
public function getB($name) {
return $this->TableObj->where("name", $name)->get();
}
public function getA() {
return $this->TableObj->where("uid", $uid)->where("is_commit", $is_commit)->get();
}
public function nullInstance() {
self::$instance = null;
}
}
`
$dbName = “xxx”;
$this->objModel = FileModel::init($dbName);
$dataA = $this->objModel->getA("ssss"); //这次可以获取数据
$dataB = $this->objModel->getB("ssss"); //这次获取的数据就是空
但是如果我在调用getB之前重新实例化FileModel这个类就ok了
$dbName = “xxx”;
$this->objModel = FileModel::init($dbName);
$dataA = $this->objModel->getA("ssss"); //这次可以获取数据
$this->objModel->nullInstance();
$dbName = “xxx”;
$this->objModel = FileModel::init($dbName);
$dataB = $this->objModel->getB("ssss"); //这次就可以获取到数据了
**请问大神为什么会出现这种问题呢,怎么才能更好的解决这个问题?**
0
打赏
收藏
点击回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
