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