2015-03-17 5 views
0

Привет, я изучаю laravel. В последнее время я столкнулся с проблемой. Это, кажется, красноречивый метод не наследуется должным образом. Когда я попытался извлечь все данные из таблицы в моем методе индекса контроллера, он показывает «Вызов неопределенного метода Category :: all()». Это что-то раздражающее, с которым я никогда не сталкивался раньше, так как раньше я делал код в подобном путь. Я вставил свой код ниже. Экспертам необходимо уделить внимание PLS.Eloquent method all() undefined

Модель:

<?php 

class Category extends \Eloquent { 
    //protected $fillable = []; 

    protected $table = 'categories'; 

    public static function getCategory($category){ 

     $category->category = $category['category']; 
     $category->save(); 

    } 
} 

Контроллер:

public function index() 
{ 
    // get all the inputs 
    $categories = Category::all(); 

    // load the view and pass the inputs 
    return View::make('manage-category') 
     ->with('categories', $categories); 
} 

просмотров:

<div class="col-md-4"> 
    <select name='category' class="table-group-action-input form-control" name="product[status]"> 
     <option>Select</option> 
     @if(isset($categories)) 
      @foreach($categories as $categories) 
       <option value="{{ $categories->id }}">{{ $categories->category }}</option> 
      @endforeach 
     @endif 
    </select> 
</div> 

Маршруты:

Route::get('/manage-category','[email protected]'); 
+1

Две вещи, о которых я мог думать, это то, что вы удалили псевдоним в '' 'app/config/app.php''', указывая на класс модели Eloquent, или вы определили какой-то другой псевдоним, называемый' '' Category''', который указывает на другой класс. Попробуйте '' '$ class = new ReflectionClass ('Category');' '' и попытайтесь свалить некоторую информацию с помощью http://php.net/manual/pl/class.reflectionclass.php, чтобы проверить, Категория '' класс действительно тот, который вы хотите использовать. –

+0

однако я не вносил никаких изменений в app.php .. Я также проверил файл app.php .. u может видеть это - pastebin.com/qZEhmxbw – WahidSherief

+0

Используете ли вы какие-либо пакеты? Твой код мне кажется хорошим. – nozzleman

ответ

1

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

Обратите внимание: Laravel 4 не автозагружает ваши модели (или любые классы библиотеки неконтроллеров, которые добавляются позже), поэтому каждый раз, когда вы добавляете класс модели в свой проект, вам нужно запустить команду composer dump-autoload из вашего каталог проекта.

+0

спасибо за ответ ур .. хотя я исправил его. Просто обновите все мои миграции и восстановите их. Но ваше предложение велико. Если я создаю модель кли ... тогда мне нужно запустить компоновщик dump-autoload ?? – WahidSherief

+0

Я думаю, да. Вы должны запускать 'composer dump-autoload' всякий раз, когда вы добавляете файлы без контроллера, независимо от того, какие файлы создавались с помощью команд мастеров или вручную. –

+0

спасибо и очень – WahidSherief