在laravel控制器中引用模型的故障排除

时间:2016-07-30 10:11:20

标签: php laravel-5.2

我一直尝试在laravel 5.2应用程序(carfreak)中解决错误失败。

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

我已将默认用户模型移动到文件夹app / models并进行了必要的更改,以便它可以正常工作。

现在我有了一个新的控制器CarController,以及一个不起作用的新模型CarModel。它似乎是命名空间这么简单的问题,但我无法解决它。

  • 是models文件夹中的模型?是。 carfreak\app\Models\CarModel.php
  • 控制器命名空间是否正确?是的...... namespace carfreak\Http\Controllers;
  • 控制器是否参考模型?是... use App\Models\CarModel;
  • 模型名称空间是否正确?是的...... namespace carfreak\Models;

我可以通过使用CarController来创建不同版本的错误,但我认为没有任何排列有效。

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

编辑:更多细节补充:

具有讽刺意味的是,我可以php artisan make:model sanityCheck并且它将在\app根目录中创建一个模型(即不在app \ 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);       


    }

}

2 个答案:

答案 0 :(得分:0)

这看起来错误,\carfreak\app\Models\CarModel;应该在App\Models\CarModel中使用this is carController

套管在linux上非常重要。通常在PSR Aloader中使用命名空间来查找文件。 Linux文件系统区分大小写。因此CareModel.php文件应位于App/Models/CarModel.php

但我从未使用过Laravel ......

答案 1 :(得分:0)

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

让我思考不同的帖子是Mansoor Akhtar的建议: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