Laravel 4.2 和 migrate 无法正常工作

Posted

技术标签:

【中文标题】Laravel 4.2 和 migrate 无法正常工作【英文标题】:Laravel 4.2 and migrate make not working 【发布时间】:2015-11-06 03:46:39 【问题描述】:

我根据《Laravel 4 入门》一书创建了一个项目。

所以,我在 app/models/ 中创建了两个文件 - Cat.php 和 Breed.php,内容如下:

猫.php

<?php

class Cat extends Eloquent 
    protected $fillable = array('name','date_of_birth','breed_id');

    public function breed() 
        return $this->belongsTo('Breed');
    

和 Breed.php

<?php

class Breed extends Eloquent 
    public $timestamps = false;

    public function cats()
    
        return $this->hasMany('Cat');
    

之后,我使用命令php artisan migration:make create_cats_and_breeds_table

好的,应该在 app/database/migrations 中生成文件。是的。

但是,它的内容和书中的不一样……

在书中:

<?php

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

class AddCatsAndBreedsTable extends Migration 

    public function up()
    
        Schema::create('cats', function($table)
        
            $table->increments('id');
            $table->string('name');
            $table->date('date_of_birth');
            $table->integer('breed_id')->nullable();
            $table->timestamps();
        )
        Schema::create('breeds', function($table)
        
            $table->increments('id');
            $table->string('name');
        )
    

    public function down()
    
        Schema::drop('cats');
        Schema::drop('breeds');
    


我的代码:

<?php

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

class AddCatsAndBreedsTable extends Migration 

    public function up()
    
        //
    

    public function down()
    
        //
    


发生了什么?

【问题讨论】:

你拥有的代码只是骨架。在 up 方法中输入列定义并运行迁移命令。 @CannotFindSymbol ,我知道这个骨架,但它是由命令生成的。 A 应该按照书中的方式生成。 php artisan generate:migration create_posts_table --fields="title:string, body:text" 这可能对你有帮助。祝你好运 【参考方案1】:

migration:make 命令对您的模型一无所知。它只是创建一个存根,您需要为您的表填充列定义。

【讨论】:

hmmm,不过按照书上的说法,你应该会生成完整的代码 什么书?要么你看错了,要么这本书在撒谎。 Migrate 命令从未为您生成列定义。这是不可能的 - 在 Eloquent 中,您没有在模型中定义字段列表,因此它不知道您的模型具有哪些属性或它们的类型可能是什么。请注意,您也没有将模型名称传递给命令,因此这是不可能的另一个原因。【参考方案2】:

https://github.com/laracasts/Laravel-4-Generators

提供一些额外的工匠命令,您可以使用这些命令来指定您的字段以生成迁移文件。

php artisan generate:migration create_posts_table --fields="title:string, body:text"

【讨论】:

以上是关于Laravel 4.2 和 migrate 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - php artisan migrate - SQLSTATE[HY000] [14] 无法打开数据库文件

Laravel 4 migrate:rollback with --path on artisan CLI

Laravel 4 migrate:rollback with --path on artisan CLI

php artisan migrate 不适用于 Laravel 5.4 中的 XAMPP

身份验证 laravel 4.2 无法工作

作曲家错误 - 您的要求无法解决 - Laravel 4.2 on Mediatemple