2014-10-13 2 views
9

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

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


?> 
+14

Попробуйте запустить 'композитор dumpautoload' –

+0

К сожалению, это не работает для меня. Я попробовал это до –

+2

. Каков результат 'php composer.phar diagnose', и он должен быть' comper dump-autoload' с дефис – Ohgodwhy

ответ

7

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

$ php artisan generate:model Login

Это создаст новую Красноречивую модель в app/models каталоге, который должен выглядеть следующим образом.

class Login extends Eloquent { 

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

} 

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

+0

Эй, я немного близок к твоему. Решение работало, но только 50%, теперь ошибка является базовой таблицей или представлением не найдено. стол hariyali.logins, но моя таблица - это просто логин, откуда взялись эти логины. Дополнительные данные даны из –

+0

Укажите имя таблицы как свойство класса в классе модели Eloquent 'protected $ table = 'login';'. Я обновляю свой ответ. – Bogdan

+0

Eloquent автоматически предполагает, что имя таблицы является строчной версией имени вашей модели в нижнем регистре, поэтому в вашем случае имя модели 'Login' означает, что он автоматически будет искать таблицу' logins', если вы не укажете свойство '$ table' для вашей модели. Вы можете прочитать [Eloquent Docs] (http://laravel.com/docs/master/eloquent), чтобы получить больше информации о соглашениях. – Bogdan

13

EDIT

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

use App\Login; 

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

так в основном начало файла должен выглядеть следующим образом:

<?php 

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

EARLIER ANSWER

Вы не объяснили что точная ошибка (возможно, ошибка для 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, он будет работать нормально.

+0

Благодарим вас за ответ. Я пропустил одно. Я назвал его таким образом loginTableSeeder.php, и да, я его исправил, и теперь он выглядит так, LoginTableSeeder.php. Теперь вот мой код LoginTableSeeder.php. Удалить(); \t \t Войти :: создать (массив ( \t \t \t 'имя пользователя' \t => \t 'Sanju', \t \t \t 'пароль' \t => \t Hash :: сделать ('') Санджу \t \t \t)); \t} } ?>, Но его еще не зафиксировано. –

+0

@samhukiklsk Как я уже упоминал, проблема, вероятно, в том, что класс Seeder не найден. Вы должны иметь 'use Illuminate \ Database \ Seeder;' строку в этом файле после '

+0

Soory, mate is not работа для меня. –

0

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

Update композитор с помощью команды:

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

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

0

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

namespace yournamespace; 
use App\Login; 
use Illuminate\Database\Seeder; 
8

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

2

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

composer dump-autoload -o 
Смежные вопросы