Устранение неполадок, связанных с моделью в контроллере laravel

Я безуспешно пытался разрешить ошибку в приложении laravel 5.2 (carfreak).

FatalErrorException in PropertyController.php line 85: Class 'App\Models\CarModel' not found

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

Теперь у меня есть новый контроллер CarController и новая модель CarModel , которые просто не работают. Кажется, это простая проблема с пространствами имен, но я не могу ее разрешить.

  • это модель в папке моделей? Да. carfreak\app\Models\CarModel.php
  • правильное пространство имен контроллеров? Да … namespace carfreak\Http\Controllers;
  • Контролирует ли контроллер модель? Да … use App\Models\CarModel;
  • правильное пространство имен модели? Да … namespace carfreak\Models;

Я могу создавать разные версии ошибки, играя с CarController но никакая перестановка, о которой я могу думать, сработала.

EDIT: добавлен контроллер и модель …

EDIT: добавлено:

Ирония заключается в том, что я могу php artisan make:model sanityCheck и он создаст модель в корне \app (т. php artisan make:model sanityCheck Не в приложении \ models) … и эту модель можно назвать просто прекрасной. Если я верну свой CarController в корневой каталог и сменим его пространство имен соответствующим образом, оно все равно не сработает. Это похоже на то, что у меня есть глупая ошибка орфографии в имени класса или что-то в этом роде, но я скопировал и вставил имена классов в свое имя файла, объявление класса, «использование» объявлений и т. Д. И т. Д. все еще. оленья кожа. Работа. Aargh!

// это carModel

 <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class CarModel extends Model { // /** * The attributes that are mass assignable. * @var array */ protected $fillable = [ 'colourOfCar', ]; } 

// это carController

 <?php namespace carfreak\Http\Controllers; use Illuminate\Http\Request; //use \carfreak\app\Models\CarModel; use App\Models\CarModel; class CarController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function __construct() { $this->middleware('auth'); } public function store(Request $request) { // validate the data $this->validate($request, array( 'CarColour' => 'required|max:50' )); // store in the database $newCar = new CarModel; dd($request); } } 

Это выглядит неправильно: \carfreak\app\Models\CarModel; должен быть использован App\Models\CarModel в this is carController

Корпус важен для Linux. Пространство имен обычно используется в PSR Aloader для поиска файла. И файловая система Linux чувствительна к регистру. Поэтому файл CareModel.php должен находиться в App/Models/CarModel.php

Но я никогда не использовал Laravel …

Ну, вот оно. Я решил это, задав себе этот вопрос: если у меня будет столько проблем с именами, ссылками и организацией моих моделей, тогда, возможно, я смогу заставить ремесленника сделать это для меня.

Сообщение, которое меня задумало по-другому, было советом Мансура Ахтара: Как я могу дать указание ремесленнику сохранить модель в конкретном каталоге?

  1. Попросите ремесленника сделать модель в нужном месте в первый раз. php artisan make:model Models/CarModel

  2. В Контроллере use name-of-app\Models\CarModel; к модели правильно, use name-of-app\Models\CarModel;

  3. В моей проблеме может быть и не может быть промывка кеша. Во время каждого изменения я периодически перезапускал свой XAMPP, чтобы гарантировать, что кеширование не будет задействовано. Я также пробовал php artisan cache:clear