現在、ユーザーテーブルをシードしようとしています。 2行でこのようにしようとすると、失敗します。偽のデータを作成するために、$ users配列内の2つの配列の代わりに単一の配列を使用するだけでうまく機能します。
私は何を間違っていますか、これを行う適切な方法は何ですか?
class UserTableSeeder extends Seeder {
public function run()
{
DB::table('users')->delete();
$users = [
['id' => 1, 'name' => 'Stephan de Vries', 'username' => 'stephan', 'email' => '[email protected]', 'password' => bcrypt('carrotz124')],
['id' => 2, 'name' => 'John doe', 'username' => 'johnny', 'email' => '[email protected]', 'password' => bcrypt('carrotz1243')],
];
User::create($users);
}
}
モデルを使用する必要がある場合、ループが必要です。
_foreach($users as $user){
User::create($user);
}
_
それ以外の場合は、DB::table()
およびinsert
を使用できます。
_DB::table('users')->insert($users);
_
実際には、モデルでinsert()
を呼び出すこともできます(結果のクエリは同じです)
_User::insert($users);
_
注insert
メソッドを選択すると、タイムスタンプやモデルイベントなどの特別なEloquent機能が失われます。
これはLaravel 5.3
<?php
use Illuminate\Database\Seeder;
class UsersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
// check if table users is empty
if(DB::table('users')->get()->count() == 0){
DB::table('users')->insert([
[
'name' => 'Administrator',
'email' => '[email protected]',
'password' => bcrypt('password'),
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
],
[
'name' => 'Agency',
'email' => '[email protected]',
'password' => bcrypt('password'),
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
],
[
'name' => 'End',
'email' => '[email protected]',
'password' => bcrypt('password'),
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
]
]);
} else { echo "\e[31mTable is not empty, therefore NOT "; }
}
}
public function run()
{
//
for ($i=0; $i < 1000; $i++) {
DB::table('seo_contents')->insert([
'title' => str_random(10),
'content' => str_random(100),
'created_at'=>date('Y-m-d H:i:s'),
'updated_at'=>date('Y-m-d H:i:s'),
]);
}
}
Createではなくinsertを使用する必要があります。したがって、コードは次のようになります。
class UserTableSeeder extends Seeder {
public function run()
{
DB::table('users')->delete();
$users = [
['id' => 1, 'name' => 'Stephan de Vries', 'username' => 'stephan', 'email' => '[email protected]', 'password' => bcrypt('carrotz124')],
['id' => 2, 'name' => 'John doe', 'username' => 'johnny', 'email' => '[email protected]', 'password' => bcrypt('carrotz1243')],
];
User::insert($users);
}
}