2016-09-10 3 views
1

저는 Laravel을 사용하고 있습니다. 나는 데이터베이스와 시드 파일을 만들고있다. (테스트 더미 사용하지 않음) 터미널 프로세스를 시작할 때 누락 된 인수 오류가 발생했습니다.Laravel 누락 된 인수 db : seed

[email protected] ~/Code/Laravel $ php artisan db:seed 
Seeded: UsersTableSeeder 
Seeded: RolesTableSeeder 

[ErrorException] 
Missing argument 1 for Illuminate\Database\Eloquent\Builder::where() 

[email protected] ~/Code/Laravel $ 

DatabaseSeeder.php

<?php 

use Illuminate\Database\Eloquent\Model; 
use Illuminate\Database\Seeder; 


class DatabaseSeeder extends Seeder 
{ 
    /** 
    * Run the database seeds. 
    * 
    * @return void 
    */ 
    public function run() 
    { 

     Model::unguard(); 
     $this->call(UsersTableSeeder::class); 
     $this->call(RolesTableSeeder::class); 
     $this->call(PermissionsTableSeeder::class); 
    } 
} 

UsersTableSeeder.php

<?php 

use App\Models\User; 
use Illuminate\Database\Seeder; 


class UsersTableSeeder extends Seeder 
{ 
    public function run() 
    { 
     User::truncate(); 

     User::create([ 
      'first_name' => 'Onur', 
      'last_name' => 'Kaya', 
      'username' => 'Khazax', 
      'username_slug' => 'khazax', 
      'email' => '[email protected]', 
      'password' => bcrypt('123'), 
      'confirmation_code' => md5(microtime()+env('APP_KEY')), 
      'confirmed' => 1, 
      'settings' => [ 
       'gender' => 'Erkek', 
       'phone' => '111', 
       'adress' => 'Eskisehir/Turkiye', 
       'home_page' => 'https://khazadum.com', 
       'opt_in_monhtly' => false, 
       'opt_in_quartly' => false, 
       'opt_in_year' => true 
      ] 
     ]); 

     User::create([ 
      'first_name' => 'Tab', 
      'last_name' => 'Dev', 
      'username' => 'Tabdev', 
      'username_slug' => 'tabdev', 
      'email' => '[email protected]', 
      'password' => bcrypt('123'), 
      'confirmation_code' => md5(microtime()+env('APP_KEY')), 
      'confirmed' => 1, 
      'settings' => [ 
       'gender' => 'Erkek', 
       'phone' => '222', 
       'adress' => 'Istanbul/Turkey', 
       'home_page' => 'https://tabtusu.com', 
       'opt_in_monhtly' => false, 
       'opt_in_quartly' => false, 
       'opt_in_year' => true 
      ] 
     ]); 
    } 
} 

RolesTableSeeders.php

<?php 

use App\Models\Role; 
use App\Models\User; 
use App\Models\AssignedRole; 
use Illuminate\Database\Seeder; 

class RolesTableSeeder extends Seeder 
{ 
    public function run() 
    { 
     Role::truncate(); 

     $adminRole = new Role; 
     $adminRole->name = 'admin'; 
     $adminRole->display_name = 'Administrator'; 
     $adminRole->description = 'Tüm yetkilerin var olduğu kullanıcı grubu'; 
     $adminRole->is_admin = 1; 
     $adminRole->save(); 

     $userRole = new Role; 
     $userRole->name = 'user'; 
     $userRole->display_name = 'User'; 
     $userRole->description = 'Sadece site içi işlemleri yapabilen kullanıcı grubu'; 
     $userRole->is_admin = 0; 
     $userRole->save(); 

     $admin = User::where('email', '[email protected]')->first(); 
     $assRoleAdmin = new AssignedRole; 
     $assRoleAdmin->user_id = $admin->id; 
     $assRoleAdmin->role_id = $adminRole->id; 
     $assRoleAdmin->save(); 

     $user = User::where('email', '[email protected]')->first(); 
     $assRoleUser = new AssignedRole; 
     $assRoleUser->user_id = $user->id; 
     $assRoleUser->role_id = $userRole->id; 
     $assRoleUser->save(); 

    } 
} 

및 PermissionsTableSeeders.php

<?php 


use App\Models\Permission; 
use App\Models\Role; 
use Illuminate\Database\Seeder; 

class PermissionsTableSeeder extends Seeder 
{ 
    public function run() 
    { 

     Permission::truncate(); 

     $permission = [ 

      array(
       'name' => 'manage_user', 
       'display_name' => 'Manage Users', 
       'is_admin' => 1 
      ), 

      array(
       'name' => 'manage_content', 
       'display_name' => 'Manage Content', 
       'is_admin' => 1 

      ), 

      array(
       'name' => 'manage_roles', 
       'display_name' => 'Manage User Roles', 
       'is_admin' => 1 
      ), 

      array(
       'name' => 'manage_files', 
       'display_name' => 'Manage Files', 
       'is_admin' => 1 

      ) 

     ]; 

     foreach($permission as $row) 
     { 
      $row = array_merge($row, ['created_at' => new DateTime, 'updated_at' => new DateTime]); 
      DB::table('permissions')->insert($row); 
     } 

     $role_id_admin = Role::where()->first()->id; 
     $perm_base = (int)DB::table('permissions')->first()->id-1; 

     $perms = [ 
      array(
       'role_id' => $role_id_admin, 
       'permission_id' => $perm_base + 1 
      ), 

      array(
       'role_id' => $role_id_admin, 
       'permission_id' => $perm_base + 2 
      ), 

      array(
       'role_id' => $role_id_admin, 
       'permission_id' => $perm_base + 3 
      ), 

      array(
       'role_id' => $role_id_admin, 
       'permission_id' => $perm_base + 4 
      ), 

      array(
       'role_id' => $role_id_admin, 
       'permission_id' => $perm_base + 5 
      ) 
     ]; 

     DB::table('permission_role')->delete(); 

     foreach($perms as $row) 
     { 
      $row = array_merge($row, ['created_at' => new DateTime, 'updated_at' => new DateTime]); 
      DB::table('permission_role')->insert($row); 
     } 
    } 
} 

일부 코드가 누락되었거나 단순한 오타입니까? 도움을 주셔서 미리 감사드립니다. PermissionsTableSeeder에서

$role_id_admin = Role::where()->first()->id; 

:

+0

-v' 인수'와 실행 그래서'PHP는 장인 DB : seed -v'를 사용하여 전체 스택 추적을 확인하고 어떤 코드 행이 불평하는지 확인하십시오. – ntzm

답변

0

코드의 문제는 라인입니다.

$role_id_admin = Role::first()->id; 

또는 당신은 또한 같은 이것에 대한 조건을 추가해야합니다 :

논리에 따라서는 다음과 같아야합니다

$role_id_admin = Role::where('name','admin')->first()->id; 
+0

오, 나는 이것을 놓쳤다. Marcin을 도와 주셔서 감사합니다! –

관련 문제