Сеялка Laravel выдает ошибку. Класс не найден

Я новичок в Laravel, и я учу себя, как аутентифицироваться из таблицы входа. Я мигрировал и создал таблицу. Теперь я пытаюсь ввести данные в таблицу входа в систему, но командная строка постоянно выдает мне ошибку, в которой говорится Fatal Error, class login not found, и я понятия не имею, что я пропустил. Так может кто-нибудь, пожалуйста, помогите мне. Вот код, который у меня есть, и да, я использую Laravel 4.3

<?php
class loginTableSeeder extends Seeder
{
    public function run()
    {
        DB::table('login')->delete();
        login::create(array(
            'username'  =>  'sanju',
            'password'  =>  Hash::make('sanju')
            ));
    }
}


?> 

person samhu kiklsk    schedule 13.10.2014    source источник
comment
Попробуйте запустить composer dumpautoload   -  person Logan Bailey    schedule 13.10.2014
comment
Извините, это не работает для меня. Я пробовал это раньше   -  person samhu kiklsk    schedule 13.10.2014
comment
Каков результат php composer.phar diagnose и должно быть composer dump-autoload с дефисом   -  person Ohgodwhy    schedule 13.10.2014
comment
когда я использую функцию composer.phar, она возвращает мне: не удалось открыть входной файл: composer.phar, и я использовал метод composer dump-autoload, и он не работает. Извиняюсь   -  person samhu kiklsk    schedule 13.10.2014
comment
Включение полного сообщения об ошибке поможет людям отследить, что именно пошло не так.   -  person Alan Storm    schedule 13.10.2014
comment
‹ошибка:‹тип: Symfony\\Components\\Debug\\Exception\\FatalErrorException, сообщение: Class 'Login' not found, файл: C:\\xampp\htdocs\\hariyalihost\\app\\database\\seeds \LoginTableSeeder.php,строка:7›}   -  person samhu kiklsk    schedule 13.10.2014


Ответы (7)


Вам нужно создать модель Eloquent для этой таблицы, чтобы использовать Login::create(). Вы можете сделать это с помощью простой команды ремесленника:

$ php artisan generate:model Login

Это создаст новую модель Eloquent в каталоге app/models, которая должна выглядеть так.

class Login extends Eloquent {

    protected $fillable = [];
    protected $table = 'login';

}

Ваш код должен работать после этого. Если он по-прежнему не гарантирует, что вы запустите composer dump-autoload.

person Bogdan    schedule 13.10.2014
comment
Эй, я немного близок к твоему. Решение сработало, но только на 50%, теперь ошибка в том, что базовая таблица или представление не найдено. таблица hariyali.logins, но моя таблица - это просто логин, так откуда взялись эти логины. Дополнительные s приходят от - person samhu kiklsk; 13.10.2014
comment
Укажите имя таблицы как свойство класса в классе модели Eloquent protected $table = 'login';. Я обновил свой ответ. - person Bogdan; 13.10.2014
comment
Eloquent автоматически предполагает, что имя таблицы является версией имени вашей модели во множественном числе в нижнем регистре, поэтому в вашем случае имя модели Login означает, что он будет автоматически искать таблицу logins, если вы не укажете свойство $table для своей модели. Вы можете прочитать документы Eloquent, чтобы лучше ознакомиться с соглашениями. - person Bogdan; 13.10.2014
comment
Хорошо, теперь 80% проблема исправлена, теперь есть еще одна проблема, в которой написано неизвестное имя столбца «updated_at», мне нужно добавить временную метку () в мой файл миграции. Это ошибка все о - person samhu kiklsk; 13.10.2014
comment
Да, вы можете добавить это к миграции, но вы также можете добавить protected $timestamps = false; в свой класс модели, если вы не хотите, чтобы модель использовала соглашение об именах временных меток по умолчанию. - person Bogdan; 13.10.2014
comment
большое спасибо ... спасибо, чувак !! Это сработало, я разберусь с отметкой времени () в документе laravel. Спасибо приятель - person samhu kiklsk; 13.10.2014

ИЗМЕНИТЬ

Теперь я вижу, проблема связана с вашим классом login (при более раннем форматировании вопроса точная ошибка была неразборчивой). Вы должны снова посмотреть, как называется файл, в котором у вас есть класс login, и как называется класс. По соглашению файл должен иметь имя Login.php (с заглавной буквы), а имя класса также должно быть Login (с заглавной буквы). Вы также должны проверить, в каком пространстве имен находится ваш класс Login. Если он определен в пространстве имен App, вы должны добавить к вашему LoginTableSeeder:

use App\Login;

в следующей строке после <?php

поэтому в основном начало вашего файла должно выглядеть так:

<?php

    use App\Login;
    use Illuminate\Database\Seeder;

ПРЕДЫДУЩИЙ ОТВЕТ

Вы не объяснили, в чем именно заключается ошибка (вероятно, ошибка для класса Seeder), но:

В database/seeds/DatabaseSeeder.php вы должны запустить сидер входа в систему следующим образом:

$this->call('LoginTableSeeder');

В файл database/seeds нужно вставить LoginTableSeeder.php с заглавной буквы в начале.

Теперь ваш файл LoginTableSeeder.php должен выглядеть так:

<?php

use Illuminate\Database\Seeder;

class LoginTableSeeder extends Seeder
{
    public function run()
    {

        // your code goes here
    }
}

вам нужно импортировать Seeder с use в начале файла, и снова имя класса должно начинаться с заглавной буквы.

Теперь вы должны запустить composer dump-autoload, и теперь, когда вы запустите php artisan db:seed, он будет работать нормально.

person Marcin Nabiałek    schedule 13.10.2014
comment
Спасибо за ваш ответ. Я упустил одну вещь. Я назвал его таким образом: loginTableSeeder.php, и да, я исправил его, и теперь он выглядит так: LoginTableSeeder.php. Теперь вот мой код LoginTableSeeder.php. ‹?php class loginTableSeeder extends Seeder { public function run() { DB::table('login')-›delete(); Login::create(array( 'username' =› 'sanju', 'password' =› Hash::make('sanju') )); } } ?›, Но это еще не исправлено. - person samhu kiklsk; 13.10.2014
comment
@samhukiklsk Как я уже упоминал, проблема, вероятно, в том, что класс Seeder не найден. В этом файле должна быть строка use Illuminate\Database\Seeder; после <?php, как в моем коде выше. - person Marcin Nabiałek; 13.10.2014
comment
@samhukiklsk Я отредактировал свой ответ (ответ в начале) - person Marcin Nabiałek; 13.10.2014
comment
документ хороший, но эта ошибка не упоминается в документах laravel. laravel.com/docs/5.3/seeding в моем классе автозагрузки файла composer.json уже есть и установите в нем базу данных. у меня сработал просто запуск composer dump-autoload - person Ankit Vishwakarma; 21.10.2016

Просто запустите composer dump-autoload -o, чтобы автозагрузчик забрал новые классы, потому что папка базы данных не загружается автоматически с помощью PSR-4.

person DannyFeliz    schedule 27.12.2016

Это сработало для меня

composer dump-autoload -o 
person rabin    schedule 12.06.2017
comment
а если побег отключен хостингом? - person Akbar Noto; 03.07.2019

У меня такая же проблема, но вы можете решить ее, добавив свое пространство имен:

namespace yournamespace; 
use App\Login;
use Illuminate\Database\Seeder;
person hamidreza samsami    schedule 21.08.2016

Я испытал ту же проблему. В моем случае композитор был очень старым, и после его обновления все работает нормально.

Обновите композитор командой:

$ самообновление композитора

Надеюсь, это может помочь другим.

person Fernando Kosh    schedule 03.06.2016

Вам нужно создать модель

$ php artisan generate:model Login

и чем в вашем классе сеялки. Необходимо добавить use App\Models\Login; в мой файл loginTableSeeder.

person Nikunj Dhimar    schedule 19.09.2020