Laravel 5模型类找不到。

3

我在 Laravel 5 中遇到关于模型的问题。

我想要访问我的模型并获得返回值,但是不起作用 :(

app/Http/Controllers/MemberController.php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use App\Model;
class MemberController extends Controller
{
    public function index()
    {
        return MemberModel::test();
    }
} 

app/Model/MemberModel.php

namespace App\Model;

use Illuminate\Database\Eloquent\Model;

class MemberModel extends Model
{
    public function test(){
        return "123";
    }
}

routes.php

Route::get('test', 'MemberController@index');

错误消息是...
FatalErrorException in MemberController.php :
Class 'App\Http\Controllers\MemberModel' not found

我对PHP一无所知,但我猜测MemberController.php需要像这样的一行代码:use App\Model\MemberModel;而不是你现在使用的use App\Model; - Olson.dev
3个回答

3
您将模型存放在“Model”文件夹中,因此应该是:
use App\Model\MemberModel;

太好了!现在可以工作了,我想问一下,我看到有些代码写成这样:\MemberModel::test();我想知道 "" 有什么意义? - Maras
@Maras. 请阅读此链接:https://dev59.com/kG445IYBdhLWcg3wl7TW,该链接涉及PHP 5.3中反斜杠的作用。 - user4294557

1

有两个选项,一个是需要使用命名空间,否则就使用那种方式。

public function index()
{
    return \App\MemberModel::test();
}

0

你也可以在composer.json中的psr-4中添加位置。

...
"autoload": {
    "classmap": [
        "database",
        "app/models"
    ],
    "psr-4": {
        "App\\": "app/",
    }
},

运行 composer dump-autoload 您可以通过名称注入模式

use Model;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接