при попытке извлечь некоторые значения из базы данных с помощью объекта модели User я получаю следующую ошибку: BadMethodCallException Method [find] does not exist
Вот мои файлы: Пользователь модели
<?php use Illuminate\Auth\UserInterface; use Illuminate\Auth\Reminders\RemindableInterface; class User extends Eloquent implements UserInterface, RemindableInterface { /** * The database table used by the model. * * @var string */ protected $table = 'users'; /** * The attributes excluded from the model's JSON form. * * @var array */ protected $hidden = array('password'); public function projects() { return $this->belongsToMany('Project'); } public function trys() { return $this->hasMany('Try'); } /** * Get the unique identifier for the user. * * @return mixed */ public function getAuthIdentifier() { return $this->getKey(); } /** * Get the password for the user. * * @return string */ public function getAuthPassword() { return $this->password; } /** * Get the e-mail address where password reminders are sent. * * @return string */ public function getReminderEmail() { return $this->email; } }
Пользователь контроллера:
<?php class user extends BaseController { public function showWelcome($id) { $user1 = User::find($id); return View::make('users.index', array('user' => $user1)); // } }
Просмотр пользователей / index.php
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>first page</title> </head> <body> <?php echo 'Hello'; ?> </body> </html>
и route.php:
<?php Route::get('user/{id}', 'user@showWelcome'); Route::get('/', function() { return View::make('hello'); });
Спасибо за помощь
Вы не должны получать эту ошибку, потому что кажется, что вы используете Eloquent, и на нем есть метод find()
.
Но вы получаете эту ошибку, и есть несколько возможных причин:
1) User::
вы вызываете не то же самое, что вы здесь показываете, чтобы проверить выполнение в контроллере:
$reflector = new ReflectionClass("User"); $fn = $reflector->getFileName(); dd($fn);
Он должен показать вам полный путь вашего класса.
2) В автозагрузке что-то не так, вы можете запустить:
composer dumpautoload
Попробовать это исправить.
3) Что-то не так с источниками Laravel, вы можете удалить код Laravel:
rm -rf vendor/laravel
и установите его снова
composer update
Иногда этот конфликт возникает, когда в Laravel существует еще одна модель с тем же именем и, скорее всего, имеет приоритет над вашей моделью. Избегайте «ключевых слов». Для меня моя проблема заключалась в вызове моей модели: Form и my db table (from migration): forms .
Выполнение следующего cmd в моем FormController :
$reflector = new ReflectionClass("Form"); $fn = $reflector->getFileName(); dd($fn);
показал, что «реальная» форма находилась в рамках Illuminate:
"/home/pkanane/laravel_appz/cpay/vendor/laravel/framework/src/Illuminate/Support/Facades/Form.php"
Поэтому я просто изменил свое имя модели на WebForm и мою таблицу db на web_forms