我的 Laravel 有问题

Something wrong with my Laravel

我的 Laravel 肯定有问题。

我安装了 Laravel 5.4。我已经在我的 windows 全局安装了 Composer。我有 php artisan 工作,但我到处都遇到错误:


php artisan 修补匠

当我输入 php artisan make:model Brand 时,它显示 Model created succesfully. 太棒了,对吧?当我接下来输入 php artisan tinkerApp/Brand::all() 时,它显示 Class 'Brand' not found.

虽然我的 app 文件夹中有 Brand.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Brand extends Model
{
    //
}

顺便说一句,我正在关注 this series laracast。


mySQL

我不能 运行 mysql 命令,尽管我已经在我的 windows 上手动安装了 mySQL(也是全局)。

它说

'mysql' is not recognized as an internal or external command,
operable program or batch file.

迁移

php artisan migrate 给我这个错误:

[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key
length is 767 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`))

[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key
length is 767 bytes

除此之外 php artisan migrate 运行良好,它为我创建了两个 table:migrationsusers.我以为那是因为我的 \database\migrations 文件夹中有两个文件。但是...

当我说 php artisan make:migration create_brands_table --create=brands 时,它确实在该文件夹中创建了一个文件。就像它应该的那样。我在 up() 函数中添加了几行,所以它看起来像这样:

Schema::table('brands', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->text('description');
    $table->timestamps();
});

但它不会创建 table。

请注意,我确实编辑了我的 .env 文件以建立正确的数据库连接,否则 php artisan migrate 将无法在我用 php artsian migrate命令。

它只给出一个已经存在的错误。我也尝试了 migrate:rollback 和 migrate:refresh。我尝试在 composer dump-autoload 命令后执行此操作,但结果相同。


我在这里一头雾水,我显然是Laravel的新手,但我的一些熟悉Laravel的朋友却从未遇到过我遇到的问题。


我尝试重新安装并创建一个新项目,所有...猜猜看:相同的结果。

你的命名空间有误,请使用 反斜杠App\Brand

要创建 table,请使用 Schema::create 而不是 Schema::table

mysql 部分不是 Laravel 的关注点,不应该出现在这个问题中。无论如何,你应该检查你的环境 PATH 变量。

关于已经存在的 table 问题,我之前 运行 对此进行了处理,这是我所做的,首先 删除您的数据库文件 ,在我的情况是我使用的是 sqlite,所以我的文件是 database.sqlite,我删除了它并 创建了 一个新文件(不要永久删除它以防万一),运行 你的迁移通常是为了确保一切正常 tables,同时删除你的旧 B运行d 迁移,然后当你为你的 B运行ds 创建一个新的迁移时table,丢失--create标志,

就像这样php artisan make:migration create_brands_table,此时按照前面提到的操作并使用Schema::create而不是Schema::table,希望现在一切正常。