LoginSignup
3
0

More than 3 years have passed since last update.

【Laravel】fakerのtextでエラーになった

Posted at

実行環境

  • PHP 7.4
  • Laravel 6.20.0

エラー内容

Faker使ってダミーデータたくさん作ってやるぞ!
と思いまして、

<?php

/** @var \Illuminate\Database\Eloquent\Factory $factory */

use App\Model\Tag;
use Faker\Generator as Faker;

$factory->define(Tag::class, function (Faker $faker) {
    return [
        'title' => $faker->name,
        'slug' =>  $faker->word,
        'description' => $faker->text,
    ];
});

こういったFactoryを用意し、php artisan db:seedを実行したところ

 ErrorException  : implode(): Passing glue string after array is deprecated. Swap the parameters

と、$faker->textのところで怒られてしまいました。

原因

php7.4になり、implodeの書き方が変更されたのが原因のようです。

【参考記事】 php7.4からimplode関数の引数順序の推奨について

implode(',', ['a','b','c']);

とすると、 a,b,cという文字列を作ってくれるのですが、今までは

implode(['a','b','c'],',');

のように逆でも問題なかったそうです。それが、Fakerのパッケージ内で使われてたということですね。

改善方法

Fakerをアップデートしてみました。

$ composer update fzaninotto/faker

これでOK!と思いきや...

Package fzaninotto/faker is abandoned, you should avoid using it. No replacement was suggested.
と、そもそもfzaninotto/fakerがabandonedだと注意されてしまいました。

仕方ないのでこちらに切り替えます。

$ composer remove vendor/fzaninotto/faker // 既存のfakerパッケージを削除
$ composer require fakerphp/faker // 新パッケージインストール

これで無事初期値を実装することができました。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0