laravel 尝试运行种子类时发出“Grammar::parameterize() must be of the type array”
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/41309665/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Issue "Grammar::parameterize() must be of the type array" while try to run a seed class
提问by ReynierPM
I have the following seeder class in Laravel 5.3.x (latest):
我在 Laravel 5.3.x(最新)中有以下播种机类:
public function run()
{
$faker = Faker::create();
$bands = \App\Band::all()->pluck('id')->toArray();
for ($i = 1; $i < 100; $i++) {
\App\Album::create([
'band_id' => $faker->randomElements($bands),
'name' => $faker->name,
'recorded_date' => $faker->date(),
'release_date' => $faker->date(),
'number_of_tracks' => $faker->randomNumber(5),
'label' => $faker->sentence(3),
'producer' => $faker->company,
'genre' => $faker->randomElements([
'Art Punk',
'Alternative Rock',
'College Rock',
'Experimental Rock',
'Folk Punk',
'Goth / Gothic Rock',
'Grunge',
'Hardcore Punk'
], 1)
]);
}
}
Each time I try to run the seed I got the following error:
每次我尝试运行种子时,都会出现以下错误:
[Symfony\Component\Debug\Exception\FatalThrowableError]
Type error: Argument 1 passed to Illuminate\Database\Grammar::parameterize() must be of the type array, string given, called in /data/www/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php on line 665
This is the full stacktrace for the error above:
这是上述错误的完整堆栈跟踪:
[2016-12-24 02:17:40] local.ERROR: Symfony\Component\Debug\Exception\FatalThrowableError: Type error: Argument 1 passed to Illuminate\Database\Grammar::parameterize() must be of the type array, string given, called in /data/www/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php on line 665 in /data/www/vendor/laravel/framework/src/Illuminate/Database/Grammar.php:118
Stack trace:
#0 /data/www/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php(665): Illuminate\Database\Grammar->parameterize('Rebeka Schimmel')
#1 /data/www/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php(683): Illuminate\Database\Query\Grammars\Grammar->compileInsert(Object(Illuminate\Database\Query\Builder), Array)
#2 /data/www/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2150): Illuminate\Database\Query\Grammars\Grammar->compileInsertGetId(Object(Illuminate\Database\Query\Builder), Array, 'id')
#3 [internal function]: Illuminate\Database\Query\Builder->insertGetId(Array, 'id')
#4 /data/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(1466): call_user_func_array(Array, Array)
#5 /data/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1605): Illuminate\Database\Eloquent\Builder->__call('insertGetId', Array)
#6 /data/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1574): Illuminate\Database\Eloquent\Model->insertAndSetId(Object(Illuminate\Database\Eloquent\Builder), Array)
#7 /data/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1471): Illuminate\Database\Eloquent\Model->performInsert(Object(Illuminate\Database\Eloquent\Builder))
#8 /data/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(561): Illuminate\Database\Eloquent\Model->save()
#9 /data/www/database/seeds/AlbumsTableSeeder.php(36): Illuminate\Database\Eloquent\Model::create(Array)
#10 /data/www/vendor/laravel/framework/src/Illuminate/Database/Console/Seeds/SeedCommand.php(63): AlbumsTableSeeder->run()
#11 /data/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2288): Illuminate\Database\Console\Seeds\SeedCommand->Illuminate\Database\Console\Seeds\{closure}()
#12 /data/www/vendor/laravel/framework/src/Illuminate/Database/Console/Seeds/SeedCommand.php(64): Illuminate\Database\Eloquent\Model::unguarded(Object(Closure))
#13 [internal function]: Illuminate\Database\Console\Seeds\SeedCommand->fire()
#14 /data/www/vendor/laravel/framework/src/Illuminate/Container/Container.php(508): call_user_func_array(Array, Array)
#15 /data/www/vendor/laravel/framework/src/Illuminate/Console/Command.php(169): Illuminate\Container\Container->call(Array)
#16 /data/www/vendor/symfony/console/Command/Command.php(254): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#17 /data/www/vendor/laravel/framework/src/Illuminate/Console/Command.php(155): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#18 /data/www/vendor/symfony/console/Application.php(821): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#19 /data/www/vendor/symfony/console/Application.php(187): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Database\Console\Seeds\SeedCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#20 /data/www/vendor/symfony/console/Application.php(118): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#21 /data/www/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(121): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#22 /data/www/artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#23 {main}
Why?
为什么?
采纳答案by Chris
Change $faker-randomElements()
to $faker->randomElement()
. band_id
is expecting an integer and given an array. genre
is expecting a string and given an array.
更改$faker-randomElements()
为$faker->randomElement()
。band_id
期待一个整数并给出一个数组。genre
期待一个字符串并给出一个数组。