mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-02-17 10:02:46 +08:00
Updated polymorphic database relation types to simpler version
- Means we can use these simpler types in API response, As desired in #3377. Closes #3395
This commit is contained in:
parent
ff8dadefee
commit
0930e8519c
|
@ -51,12 +51,12 @@ class AppServiceProvider extends ServiceProvider
|
||||||
// Allow longer string lengths after upgrade to utf8mb4
|
// Allow longer string lengths after upgrade to utf8mb4
|
||||||
Schema::defaultStringLength(191);
|
Schema::defaultStringLength(191);
|
||||||
|
|
||||||
// Set morph-map due to namespace changes
|
// Set morph-map for our relations to friendlier aliases
|
||||||
Relation::morphMap([
|
Relation::enforceMorphMap([
|
||||||
'BookStack\\Bookshelf' => Bookshelf::class,
|
'bookshelf' => Bookshelf::class,
|
||||||
'BookStack\\Book' => Book::class,
|
'book' => Book::class,
|
||||||
'BookStack\\Chapter' => Chapter::class,
|
'chapter' => Chapter::class,
|
||||||
'BookStack\\Page' => Page::class,
|
'page' => Page::class,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// View Composers
|
// View Composers
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
|
class UpdatePolymorphicTypes extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Mapping of old polymorphic types to new simpler values.
|
||||||
|
*/
|
||||||
|
protected $changeMap = [
|
||||||
|
'BookStack\\Bookshelf' => 'bookshelf',
|
||||||
|
'BookStack\\Book' => 'book',
|
||||||
|
'BookStack\\Chapter' => 'chapter',
|
||||||
|
'BookStack\\Page' => 'page',
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mapping of tables and columns that contain polymorphic types.
|
||||||
|
*/
|
||||||
|
protected $columnsByTable = [
|
||||||
|
'activities' => 'entity_type',
|
||||||
|
'comments' => 'entity_type',
|
||||||
|
'deletions' => 'deletable_type',
|
||||||
|
'entity_permissions' => 'restrictable_type',
|
||||||
|
'favourites' => 'favouritable_type',
|
||||||
|
'joint_permissions' => 'entity_type',
|
||||||
|
'search_terms' => 'entity_type',
|
||||||
|
'tags' => 'entity_type',
|
||||||
|
'views' => 'viewable_type',
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
foreach ($this->columnsByTable as $table => $column) {
|
||||||
|
foreach ($this->changeMap as $oldVal => $newVal) {
|
||||||
|
DB::table($table)
|
||||||
|
->where([$column => $oldVal])
|
||||||
|
->update([$column => $newVal]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
foreach ($this->columnsByTable as $table => $column) {
|
||||||
|
foreach ($this->changeMap as $oldVal => $newVal) {
|
||||||
|
DB::table($table)
|
||||||
|
->where([$column => $newVal])
|
||||||
|
->update([$column => $oldVal]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user