gpt4 book ai didi

php - Laravel 5.3 Seeder - 未定义的方法表?

转载 作者:行者123 更新时间:2023-11-29 11:15:57 25 4
gpt4 key购买 nike

我正在尝试学习 Laravel,但似乎文档中的示例是错误的...我想创建一个表迁移,运行它,并为其添加一些内容。

第一:

php artisan make:migration create_projects_and_tasks_tables

包含以下内容:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateProjectsAndTasksTables extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('projects', function (Blueprint $table) {
$table->increments('id');
$table->string('name')->default('');
$table->string('slug')->default('');
$table->timestamps();
});

Schema::create('tasks', function (Blueprint $table) {
$table->increments('id');
$table->integer('project_id')->unsigned()->default(0);
$table->foreign('project_id')->references('id')->on('projects')->onDelete('cascade');
$table->string('name')->default('');
$table->string('slug')->default('');
$table->boolean('completed')->default(false);
$table->text('description');
$table->timestamps();
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('tasks');
Schema::drop('projects');
}
}

它迁移好了。所以我想为项目表添加种子。

第一:

php artisan make:seeder ProjectsTableSeeder

内容:

<?php

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

class ProjectsTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$projects = array(
['id' => 1, 'name' => 'Project 1', 'slug' => 'project-1', 'created_at' => new DateTime, 'updated_at' => new DateTime],
['id' => 2, 'name' => 'Project 2', 'slug' => 'project-2', 'created_at' => new DateTime, 'updated_at' => new DateTime],
['id' => 3, 'name' => 'Project 3', 'slug' => 'project-3', 'created_at' => new DateTime, 'updated_at' => new DateTime]
);
DB::table('projects')->insert($projects);
}
}

一切就绪,我尝试回滚迁移、迁移并为其播种:

php artisan migrate:refresh --seed
Rolled back: 2016_09_28_160459_create_projects_and_tasks_tables
Rolled back: 2014_10_12_100000_create_password_resets_table
Rolled back: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_100000_create_password_resets_table
Migrated: 2016_09_28_160459_create_projects_and_tasks_tables

[Symfony\Component\Debug\Exception\FatalThrowableError]
Call to undefined method Illuminate\Database\MySqlConnection::setTable()

就是这样。我的表是空的,并且方法 DB::table() 似乎不再存在于框架中,即使 5.3 文档显示了它。我能做什么?

我使用的是 Laravel Homestead vagrant box,所以 php 版本或 Composer 不是问题。我还使用 MySQL 作为我的数据库驱动程序。

最佳答案

编写好播种器类后,您可以使用 db:seed Artisan 命令来播种数据库。默认情况下,db:seed 命令运行 DatabaseSeeder 类,该类可用于调用其他种子类。但是,您可以使用 --class 选项来指定要单独运行的特定播种器类:

php artisan db:seed

php artisan db:seed --class=UsersTableSeeder

您还可以提供 Seeder 类引用来调用 DatabaseSeeder.php 文件的方法

php artisan db:seed

将运行DatabaseSeeder.php文件并调用run()方法

所以在这里您可以提供种子源列表,如下所示

public function run()
{
$this->call(CountriesTableSeeder::class);
$this->call(VendorTypesTableSeeder::class);
}

引用:seeding

关于php - Laravel 5.3 Seeder - 未定义的方法表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39753523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com