2016-07-30 63 views
0

我一直在尝试解决laravel 5.2应用程序(carfreak)中的错误失败。在laravel控制器中引用模型的疑难解答

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玩创建不同版本的错误,但没有别的置换我能想到的任职。

编辑:控制器和模型添加...

编辑:更多细节补充:

具有讽刺意味的是,我可以php artisan make:model sanityCheck,它会创建在\app根模型(即不应用程序\模型)...并且该模型可以被称为很好。如果我将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);  


    } 

} 
+0

发表您的'CarModel'文件 – jaysingkar

+0

另外你的'CarController'文件 – jaysingkar

+0

两个词,'Namespace'和'Use' ....是正确命名,并且在正确的文件路径。如果你有一台Linux服务器,那就包括外壳。 – ArtisticPhoenix

回答

0

好了,在这儿呢。我通过问自己这个问题解决了这个问题:如果我在命名空间,参考和组织模型方面遇到了很多麻烦,那么也许我可以让工匠为我做这件事。

这让我思考不同的职位是曼苏尔阿赫塔尔的建议在这里:How do I instruct artisan to save model to specific directory?

  1. 找工匠做的正确的地方第一次模型。 php artisan make:model Models/CarModel

  2. 在Controller中,参考模型正确 use name-of-app\Models\CarModel;

  3. 有可能会或可能不会被高速缓存刷新参与了我的问题。每次更改后我都会重新启动XAMPP,以确保不涉及缓存。我也试过 php artisan cache:clear

0

这看起来错误使用\carfreak\app\Models\CarModel;应使用App\Models\CarModelthis is carController

外壳是非常重要的在Linux上。命名空间通常用于PSR Aloader来查找文件。而Linux文件系统区分大小写。所以CareModel.php文件应位于App/Models/CarModel.php

但我从来没有使用Laravel ...

+0

我没有使用linux。我将控制器中的行更改为“App \ Models \ CarModel”......没有任何区别 – Maxcot