From 805ab2cdf45b932d1f732758460182dad06ab006 Mon Sep 17 00:00:00 2001 From: Marico Date: Thu, 16 Aug 2018 18:08:28 +0800 Subject: [PATCH] =?UTF-8?q?QueryBuilder=E6=A0=B9=E6=8D=AEEntity=E6=B3=A8?= =?UTF-8?q?=E8=A7=A3=E5=8F=82=E6=95=B0=E4=B8=BB=E5=8A=A8=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=20(https://github.com/swoft-cloud/s?= =?UTF-8?q?woft-component/pull/164)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [modify]Query::table(Model)支持根据Model主动切换数据库 ``` /** * Model\Entity * @Entity(instance="other") * @Table(name="tableName") */ ``` * modify testSelectinstance modify testSelectinstance * add test case when select Instance add test case when select Instance * Update QueryBuilderTest.php --- src/QueryBuilder.php | 2 ++ test/Cases/Mysql/QueryBuilderTest.php | 20 ++++++++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/QueryBuilder.php b/src/QueryBuilder.php index 77eef0f..76651af 100644 --- a/src/QueryBuilder.php +++ b/src/QueryBuilder.php @@ -1242,6 +1242,8 @@ private function getTableNameByClassName($tableName): string if (!isset($entities[$tableName]['table']['name'])) { throw new DbException('Class is not an entity,className=' . $tableName); } + // 选择数据库 + $this->selectInstance($entities[$tableName]['instance']); return $entities[$tableName]['table']['name']; } diff --git a/test/Cases/Mysql/QueryBuilderTest.php b/test/Cases/Mysql/QueryBuilderTest.php index 63efd84..9863e18 100644 --- a/test/Cases/Mysql/QueryBuilderTest.php +++ b/test/Cases/Mysql/QueryBuilderTest.php @@ -162,12 +162,24 @@ public function testSelectinstance() 'description' => 'this my desc instance', 'age' => mt_rand(1, 100), ]; - $userid = Query::table(User::class)->selectInstance('other')->insert($data)->getResult(); + $userId = Query::table(User::class)->selectInstance('other')->insert($data)->getResult(); + $data['description']='this my desc default instance'; + $userId2 = Query::table(User::class)->insert($data)->getResult(); - $user = OtherUser::findById($userid)->getResult(); - $user2 = Query::table(User::class)->selectInstance('other')->where('id', $userid)->one()->getResult(); + $user2 = Query::table(User::class)->selectInstance('other')->where('id', $userId)->one()->getResult(); $this->assertEquals($user2['description'], 'this my desc instance'); - $this->assertEquals($user2['id'], $userid); + $this->assertEquals($user2['id'], $userId); + + $otherUser = Query::table(OtherUser::class)->where('id', $userId)->one()->getResult(); + $this->assertEquals($otherUser['age'], $data['age']); + $this->assertEquals($otherUser['id'], $userId); + + $otherUser2 = Query::table(OtherUser::class)->selectInstance('default')->where('id', $userId2)->one()->getResult(); + $this->assertEquals('this my desc default instance', $otherUser2['description']); + + $user = OtherUser::findById($userId)->getResult(); + $this->assertEquals($user->getAge(), $data['age']); + $this->assertEquals($user->getId(), $userId); } public function testSelectinstanceByCo()