diff --git a/config/sql/se/EbookTags.sql b/config/sql/se/EbookTags.sql index aa17f77f..1efec004 100644 --- a/config/sql/se/EbookTags.sql +++ b/config/sql/se/EbookTags.sql @@ -1,7 +1,6 @@ CREATE TABLE `EbookTags` ( - `EbookTagId` int(10) unsigned NOT NULL AUTO_INCREMENT, `EbookId` int(10) unsigned NOT NULL, `TagId` int(10) unsigned NOT NULL, - PRIMARY KEY (`EbookTagId`), + `SortOrder` tinyint(3) unsigned NOT NULL, UNIQUE KEY `idxUnique` (`EbookId`,`TagId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/lib/Ebook.php b/lib/Ebook.php index 2352fcd8..d9c224f9 100644 --- a/lib/Ebook.php +++ b/lib/Ebook.php @@ -144,7 +144,7 @@ class Ebook{ from Tags t inner join EbookTags et using (TagId) where EbookId = ? - order by et.EbookTagId + order by SortOrder asc ', [$this->EbookId], EbookTag::class); } @@ -1691,13 +1691,14 @@ class Ebook{ } private function AddTags(): void{ - foreach($this->Tags as $tag){ + foreach($this->Tags as $sortOrder => $tag){ try{ Db::Query(' - INSERT into EbookTags (EbookId, TagId) + INSERT into EbookTags (EbookId, TagId, SortOrder) values (?, + ?, ?) - ', [$this->EbookId, $tag->TagId]); + ', [$this->EbookId, $tag->TagId, $sortOrder]); } catch(Exceptions\DuplicateDatabaseKeyException){ // The Ebook already has the Tag, which is fine.