mirror of
https://github.com/standardebooks/web.git
synced 2025-07-15 02:46:46 -04:00
Remove primary key CollectionEbookId
Add a SortOrder to preserve the order of the collections listed in content.opf for ebook.php, e.g., for To the Lighthouse: № 15 in the Modern Library’s 100 Best Novels set. Part of the Encyclopædia Britannica’s Great Books of the Western World set. № 2 in the BBC’s 100 Greatest British Novels (2015) set.
This commit is contained in:
parent
4a7483411a
commit
cada95383f
3 changed files with 9 additions and 9 deletions
|
@ -1,8 +1,7 @@
|
|||
CREATE TABLE `CollectionEbooks` (
|
||||
`CollectionEbookId` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`EbookId` int(10) unsigned NOT NULL,
|
||||
`CollectionId` int(10) unsigned NOT NULL,
|
||||
`SequenceNumber` int(10) unsigned NULL,
|
||||
PRIMARY KEY (`CollectionEbookId`),
|
||||
`SortOrder` tinyint(3) unsigned NOT NULL,
|
||||
UNIQUE KEY `idxUnique` (`EbookId`,`CollectionId`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
class CollectionMembership{
|
||||
use Traits\Accessor;
|
||||
|
||||
public ?int $CollectionEbookId = null;
|
||||
public ?int $EbookId = null;
|
||||
public ?int $CollectionId = null;
|
||||
public ?int $SequenceNumber = null;
|
||||
public ?int $SortOrder = null;
|
||||
protected ?Collection $_Collection = null;
|
||||
}
|
||||
|
|
|
@ -177,7 +177,7 @@ class Ebook{
|
|||
SELECT *
|
||||
from CollectionEbooks
|
||||
where EbookId = ?
|
||||
order by CollectionEbookId
|
||||
order by SortOrder asc
|
||||
', [$this->EbookId], CollectionMembership::class);
|
||||
}
|
||||
|
||||
|
@ -1737,19 +1737,20 @@ class Ebook{
|
|||
}
|
||||
|
||||
private function AddCollectionMemberships(): void{
|
||||
foreach($this->CollectionMemberships as $collectionMembership){
|
||||
foreach($this->CollectionMemberships as $sortOrder => $collectionMembership){
|
||||
$collectionMembership->EbookId = $this->EbookId;
|
||||
$collectionMembership->CollectionId = $collectionMembership->Collection->CollectionId;
|
||||
$collectionMembership->SortOrder = $sortOrder;
|
||||
|
||||
try{
|
||||
Db::Query('
|
||||
INSERT into CollectionEbooks (EbookId, CollectionId, SequenceNumber)
|
||||
INSERT into CollectionEbooks (EbookId, CollectionId, SequenceNumber, SortOrder)
|
||||
values (?,
|
||||
?,
|
||||
?,
|
||||
?)
|
||||
', [$collectionMembership->EbookId, $collectionMembership->CollectionId, $collectionMembership->SequenceNumber]);
|
||||
|
||||
$collectionMembership->CollectionEbookId = Db::GetLastInsertedId();
|
||||
', [$collectionMembership->EbookId, $collectionMembership->CollectionId, $collectionMembership->SequenceNumber,
|
||||
$collectionMembership->SortOrder]);
|
||||
}
|
||||
catch(Exceptions\DuplicateDatabaseKeyException){
|
||||
// The Ebook is already a member of this Collection.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue