Laravel Migration Create User "неожиданное использование" (T_USE) "SQLite - PullRequest
4 голосов
/ 12 марта 2019

Я использую последнюю версию Laravel.Свежий проект.Только что создал функцию make: auth.

Моей целью было добавить дополнительные поля в поле регистрации.Оригинальная модель требует только имя, адрес электронной почты и пароль.Я использую SQLite и PHP 7.1.19

Я хотел добавить имя, фамилию и возраст.Почему-то я получаю ошибку, показанную ниже.

Может ли кто-нибудь уточнить, что я делаю неправильно?

Symfony\Component\Debug\Exception\FatalThrowableError  : syntax error, unexpected 'use' (T_USE) at /Users/sebastiaan/Documents/Code/auth/auth-example/database/migrations/2014_10_12_000000_create_users_table.php:3
        1| <?php
        2|  
      > 3| use Illuminate\Support\Facades\Schema;
        4| use Illuminate\Database\Schema\Blueprint;
        5| use Illuminate\Database\Migrations\Migration;
        6| 
        7| class CreateUsersTable extends Migration
        8| {
        9|     /**

      Exception trace:

      1   Illuminate\Filesystem\Filesystem::requireOnce("/Users/sebastiaan/Documents/Code/auth/auth-example/database/migrations/2014_10_12_000000_create_users_table.php")
          /Users/sebastiaan/Documents/Code/auth/auth-example/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php:448

      2   Illuminate\Database\Migrations\Migrator::requireFiles()
          /Users/sebastiaan/Documents/Code/auth/auth-example/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php:90

      Please use the argument -v to see more details.

Так выглядит файл миграции прямо сейчас.

<?php
 
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('firstname');
            $table->string('lastname');
            $table->integer('age');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

1 Ответ

4 голосов
/ 12 марта 2019

Пространство имен и операторы использования не поддерживаются в версиях PHP <<code>5.3

Пожалуйста, проверьте вашу php версию, используя <?php echo phpversion(); ?> и проверьте, что она ниже, чем 5.3

В остальном класс выглядит хорошо. Если бы у вас были пробелы в начале до начального тега php, вы получите другую ошибку, такую ​​как

Оператор объявления пространства имен должен быть самым первым оператором или после любого вызова объявления в скрипте

что, похоже, не так.

Обновление:

Еще один способ, которым это может произойти, - некоторые символы перед оператором использования. Например этот код:

<?php 

test

use \App\User;

class....
?>

Если вы замечаете слово test перед оператором использования по ошибке, это вызовет ту же ошибку.

Возвращаясь к тому, как это актуально здесь:

Если вы скопировали свой класс миграции с какого-либо веб-сайта, возможно, вы скопировали также некоторые незаметные пробельные символы. Я предложу сделать возврат, прежде чем использовать заявление и проверить наличие таких пробелов. Если вы откроете этот файл в редакторе VIM, вы также можете увидеть такие случаи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...