Вы правы, полагая, что Laravel невероятен! Итак, что касается вашего первого вопроса.
1) Если я хочу, чтобы мои данные (входные данные в таблицу) также сохранялись каким-либо образом, так что всякий раз, когда я изменяю данные в базе данных, это также может быть возвращено назад или весь процесс также может быть воссоздан заново.
Если вы хотите воссоздать данные, вам нужно будет создать табличную сеялку. Для этого просто создайте сеялку и фабрику с ремесленником.
php artisan make: сеялка UsersTableSeeder
После создания сеялки вы можете запустить его с помощью команды:
composer dump-autoload && php artisan db: seed
Если вы хотите создать контроллеры, сеялки и фабрики одновременно, когда вы создаете модель, наберите эту ремесленную команду.
php artisan make: модель User -fa
Подробнее о документации по созданию сеялок и фабрик можно узнать в Laravel здесь .
Вместо того, чтобы связываться с вашими файлами миграции, я бы создал сеялки. Вот пара примеров.
Приложение 1 - Пример фабрики товаров (база данных / фабрики / ArticleFactory.php)
<?php
use Faker\Generator as Faker;
$factory->define(App\Article::class, function (Faker $faker) {
return [
'title' => $faker->text(50),
'slug' => $faker->unique()->slug,
'body' => $faker->text(200),
'user_id' => rand(1,10),
];
});
Приложение 2 - Пример Сеялки статей (база данных / seed / ArticleTableSeeder.php)
<?php
use Illuminate\Database\Seeder;
class ArticlesTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
factory(App\Article::class, 10)->create();
}
}
Приложение 3 - Пример переноса статьи (database / migrations / 2018_05_13_create_articles_table.php)
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateArticlesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('articles', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->text('body');
$table->string('slug');
$table->integer('media_id')->nullable();
$table->integer('user_id')->nullable(); // Owner of Article
$table->timestamps();
$table->softDeletes();
$table->index('slug');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('articles');
}
}
Приложение 4 - DatabaseTableSeeder.php
<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
use Faker\Factory as Faker;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
// Disable all mass assignment restrictions
Model::unguard();
// Seeds the Articles
$this->call(ArticlesTableSeeder::class);
Затем, чтобы выполнить полный возврат к заводским настройкам, все, что вам нужно сделать, это набрать следующую команду ремесленника:
php artisan migrate: db --fresh
php artisan db: seed