public function up() { $this->schema->table('discussions', function (Blueprint $table) { $table->string('slug'); }); // Store slugs for existing discussions $this->schema->getConnection()->table('discussions')->chunk(100, function ($discussions) { foreach ($discussions as $discussion) { $this->schema->getConnection()->table('discussions')->where('id', $discussion->id)->update(['slug' => Str::slug($discussion->title)]); } }); }
/** * Set the discussion title. * * This automatically creates a matching slug for the discussion. * * @param string $title */ protected function setTitleAttribute($title) { $this->attributes['title'] = $title; $this->slug = Str::slug($title); }
<?php /* * This file is part of Flarum. * * (c) Toby Zerner <*****@*****.**> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use Flarum\Util\Str; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Builder; return ['up' => function (Builder $schema) { $schema->table('discussions', function (Blueprint $table) { $table->string('slug'); }); // Store slugs for existing discussions $schema->getConnection()->table('discussions')->chunk(100, function ($discussions) use($schema) { foreach ($discussions as $discussion) { $schema->getConnection()->table('discussions')->where('id', $discussion->id)->update(['slug' => Str::slug($discussion->title)]); } }); }, 'down' => function (Builder $schema) { $schema->table('discussions', function (Blueprint $table) { $table->dropColumn('slug'); }); }];