Не могу создать стол в Laravel

У меня есть эта проблема, что я не знаю точно, миграции и семян БД, работающих в Laravel (PHP Artisan), и у меня есть эта модель:

use Illuminate\Auth\UserInterface;class User extends Eloquent implements UserInterface {
public function getAuthIdentifier() {
return $this->getKey();
}
public function getAuthPassword() {
return $this->password;
}
public function cats(){
return $this->hasMany('Cat');
}
public function owns(Cat $cat){
return $this->id == $cat->owner;
}
public function canEdit(Cat $cat){
return $this->is_admin or $this->owns($cat);
}
public function getRememberToken(){
return $this->remember_token;
}
public function setRememberToken($value){
$this->remember_token = $value;
}
public function getRememberTokenName(){
return 'remember_token';
}

}

это мой файл миграции:

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

class CreateUser extends Migration {

public function up()
{
Schema::create('users', function($table){
$table->increments('id');
$table->string('username');
$table->string('password');
$table->boolean('is_admin');
$table->timestamps();
});

Schema::table('cats', function($table){
$table->integer('user_id')->nullable()->references('id')->on('users');
});
}public function down()
{
Schema::table('cats', function($table){
$table->dropForeign('cats_user_id_foreign');
$table->dropColumn('user_id');
});
Schema::drop('users');
}

}

и наконец мой код сеялки:

class UsersTableSeeder extends Seeder {
public function run(){

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

User::create(array(
'username' =>'admin', 'password' =>Hash::make('hunter2'), 'is_admin' =>true
));

User::create(array(
'username'=>'scott', 'password' =>Hash::make('tiger'), 'is_admin' => false
));
}
}

когда я пытаюсь перенести это, я получил это сообщение:

$php artisan migrate --path="foo"
Nothing to migrate

а потом, когда я пытаюсь:

$php artisan db:seed

это сообщение показано мне:

[PDOException]
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'laravel.users' doesn't exist

пожалуйста, помогите мне, ребята, спасибо U 🙂

и config / database.php:

return array(
'fetch' => PDO::FETCH_CLASS,
'default' => 'mysql',
'connections' => array(

'sqlite' => array(
'driver'   => 'sqlite',
'database' => __DIR__.'/../database/production.sqlite',
'prefix'   => '',
),

'mysql' => array(
'driver'    => 'mysql',
'host'      => 'localhost',
'database'  => 'laravel',
'username'  => 'root',
'password'  => '2ez4rtz',
'charset'   => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix'    => '',
),

'pgsql' => array(
'driver'   => 'pgsql',
'host'     => 'localhost',
'database' => 'forge',
'username' => 'forge',
'password' => '',
'charset'  => 'utf8',
'prefix'   => '',
'schema'   => 'public',
),

'sqlsrv' => array(
'driver'   => 'sqlsrv',
'host'     => 'localhost',
'database' => 'database',
'username' => 'root',
'password' => '',
'prefix'   => '',
),

),'migrations' => 'migrations','redis' => array(

'cluster' => false,

'default' => array(
'host'     => '127.0.0.1',
'port'     => 6379,
'database' => 0,
),

),

);

1

Решение

Кажется, что в каталоге foo у вас нет файла миграции или вы уже запустили некоторые миграции (вы используете миграции из 2 каталогов?).

Убедитесь, что у вас есть внутри foo ваши файлы миграции, и вы не выполняли никаких миграций ранее.

РЕДАКТИРОВАТЬ

И если у вас есть миграции в папке по умолчанию, вы должны просто запустить:

php artisan migrate

без использования --path="foo"

EDIT2

Вы, вероятно, должны изменить:

$table->integer('user_id')->nullable()->references('id')->on('users');

в:

$table->dropColumn('user_id');
$table->integer('user_id')->unsigned()->nullable();
$table->foreign('user_id')->references('id')->on('users');
1

Другие решения

Может случиться так, что когда вы попытались выполнить миграцию в первый раз, она записала миграцию в вашу таблицу миграции. Проверьте таблицу миграции и дайте мне знать, что вы видите.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector