jos*_*y10 5 php laravel laravel-4
我正在使用faker类来帮助播种我的数据库.DatabaseSeeder看起来像这样
<?php
class DatabaseSeeder extends Seeder
{
public function run()
{
Eloquent::unguard();
$tables = [
'users',
'posts',
];
foreach ($tables as $table) {
DB::table($table)->truncate();
}
$this->call('UsersTableSeeder');
$this->call('PostsTableSeeder');
}
}
Run Code Online (Sandbox Code Playgroud)
和UsersTableSeeder
<?php
class UsersTableSeeder extends Seeder {
public function run()
{
$faker = Faker\Factory::create();
for( $i=0 ; $i<50 ; $i++ ) {
$user = User::create([
'first_name' => $faker->firstName,
'surname' => $faker->lastName,
'email' => $faker->email,
'username' => $faker->userName,
'bio' => $faker->sentences,
'bio_html' => $faker->sentences,
'wesbite' => $faker->url,
'twitter' => $faker->word,
]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试播种此表时,我在终端中收到以下错误.
[Illuminate\Database\Eloquent\MassAssignmentException]
first_name
Run Code Online (Sandbox Code Playgroud)
如果我尝试种下两种,我就会得到这个
[ErrorException]
preg_replace(): Parameter mismatch, pattern is a string while replacement is an array
Run Code Online (Sandbox Code Playgroud)
我以为包括Eloquent::unguard();停止了这个错误?我正在运行最新版本的Laravel.
J.T*_*mes 11
faker->sentences()并faker->paragraphs()返回数组,您的类希望收到一个字符串.
您既可以使用 faker->text() ,也可以使用
implode(" ",$faker->sentences());
Run Code Online (Sandbox Code Playgroud)
小智 2
您可以在模型中定义受保护字段的空数组;
class User extends Eloquent
{
protected $guarded = [];
}
Run Code Online (Sandbox Code Playgroud)