2015-02-18 20 views
21

Tôi hiện đang cố gắng nhân giống bảng người dùng của mình. Nếu tôi thử nó như thế này với 2 hàng, nó không thành công. Nó hoạt động tốt nếu tôi chỉ sử dụng một mảng duy nhất thay vì 2 mảng bên trong mảng $ users để tạo ra một số dữ liệu giả mạo.Hạt giống nhiều hàng cùng một lúc laravel 5

Tôi đang làm gì sai, cách thích hợp để thực hiện việc này là gì?

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); 
    } 

} 

Trả lời

37

Nếu bạn phải sử dụng mô hình bạn cần một vòng lặp:

foreach($users as $user){ 
    User::create($user); 
} 

Nếu không, bạn chỉ có thể sử dụng DB::table()insert:

DB::table('users')->insert($users); 

Thực ra bạn cũng có thể gọi insert() trên mô hình (truy vấn kết quả giống nhau)

User::insert($users); 

Note nếu bạn chọn phương pháp insert bạn lỏng đặc biệt chức năng hùng biện như timestamps và các sự kiện mô hình.

+1

Được này đã thay đổi thời gian gần đây? Tôi có một trí nhớ mơ hồ về việc có thể làm chính xác những gì OP đã thử, cách đây không lâu. –

+0

@JoelHinz Không thực sự. Theo như tôi biết, nó không bao giờ có thể. Nó [đã được thảo luận] (https://github.com/laravel/framework/issues/1295) nhưng yêu cầu đã bị từ chối. – lukasgeiter

+0

Cảm ơn nó hoạt động tốt, quá xấu Tôi không thể quay trở lại một cái gì đó như thế này trong tài liệu chính thức mặc dù. –

13

này hoạt động, ngay cả đối với 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 "; } 

    } 
} 
Các vấn đề liên quan