У меня InvalidArgumentException, когда я делаю заполнение базы данных - PullRequest
1 голос
/ 19 октября 2019

Я работаю над Restful API, у меня появляется сообщение об исключении, когда я хочу создать поддельные данные в базе данных.

  • Я делаю базу данных свежей.
php artisan migrate:fresh 
  • Я заполняю базу данных.
php artisan db:seed 

Я делаю модель сМиграция и контроллер:

  • Миграция: 000000_create_posts_table.php
public function up()
{
Schema::create('posts', function (Blueprint $table) {


$table->bigIncrements('id');
$table->string('title');
$table->text('content');

$table->dateTime('date_written');

$table->String('feature_image')->unllable();
$table->integer('votes_up')->unllable();
$table->integer('votes_down')->unllable();

// TelationShipe.
$table->integer('user_id');
$table->integer('category_id');

$table->timestamps();
});



  • Модель: Post.php
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
protected $fillable = [
'title' , 'content' , 'date_written' ,
'feature_image' , 'votes_up' ,
'votes_down' , 'user_id' ,
'category_id'
];
}
  • Контроллер: PostController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PostController extends Controller
{
//
}
  • Seeder: DatabaseSeeder.php
<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        factory(\App\Post::class , 100 )->create();
    }
}
  • Фабрика: PostFactory.php
<?php

/** @var \Illuminate\Database\Eloquent\Factory $factory */
use App\User;
use Faker\Generator as Faker;
use Illuminate\Support\Str;

/*
|--------------------------------------------------------------------------
| Model Factories
|--------------------------------------------------------------------------
|
| This directory should contain each of the model factory definitions for
| your application. Factories provide a convenient way to generate new
| model instances for testing / seeding your application's database.
|
*/

$factory->define(User::class, function (Faker $faker) {
    return [
        'title' => $faker->title,
        'content' => $faker->text(400),
        'date_written' => $faker->new(),
        'feature_image' => $faker->imageUrl(),
        'votes_up' => $faker->numberBetween(1 , 100),
        'votes_down' => $faker->numberBetween(1 , 100),
        'user_id' => $faker->numberBetween(1 , 15),
        'category_id' => $faker->numberBetween(1 , 15),
    ];
});
  • , но фактическая консоль вывода:

InvalidArgumentException: неизвестный форматер "new" в

  ~/vendor/fzaninotto/faker/src/Faker/Generator.php:242
    238| 
    239|                 return $this->formatters[$formatter];
    240|             }
    241|         }
    242|         throw new \InvalidArgumentException(sprintf('Unknown formatter "%s"', $formatter));
    243|     }
    244| 
    245|     /**
              * Replaces tokens ('{{ tokenName }}') with the result 
              * from the token method call
              */

  Exception trace:

  1   Faker\Generator::getFormatter("new")
      ~/vendor/fzaninotto/faker/src/Faker/Generator.php:222

  2   Faker\Generator::format("new", [])
      ~/vendor/fzaninotto/faker/src/Faker/Generator.php:279

  Please use the argument -v to see more details.

1 Ответ

1 голос
/ 20 октября 2019

Изменить эту строку

С

'date_written' => $faker->new(),

На

'date_written' => now(),

now () вернет экземпляр Carbon текущего временидля миграции вашей базы данных требуется

В генераторе фейеров нет такой функции, которая называется new

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...