首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel 4到5个型号

Laravel 4到5个型号
EN

Stack Overflow用户
提问于 2015-04-17 21:39:28
回答 2查看 91关注 0票数 0

嗨,有人能为我澄清这一点吗?我有一个相当大的Laravel 4应用程序,使用了几个型号。我想升级到L5,只是想在控制器中使用相同的模型调用。例如:

代码语言:javascript
运行
复制
 Course::
\Course:: //if controller in a deeper folder

课程模型在App/Models中。我尝试了一个作曲家映射应用程序/模型,但没有用。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2015-04-17 22:53:12

我不知道其他人。但是在我安装的Laravel5中,我的模型是直接在app文件夹中定义的。app目录的名称空间为App

composer.json

代码语言:javascript
运行
复制
"autoload": {
    ...
    "psr-4": {
        "App\\": "app/"
    }
}

然后在App名称空间下定义模型。例如:

代码语言:javascript
运行
复制
namespace App;

use Illuminate\Database\Eloquent\Model;

class Course extends Model {

}

因此,您可以选择:

1:无论何时使用,都会使用模型的完整路径:

代码语言:javascript
运行
复制
\App\Course::all();

2:像往常一样在使用模型之前对模型执行 use

代码语言:javascript
运行
复制
namespace Your\Namespace;

use App\Course;

class YourClass {

    public function yourFunction()
    {
        Course::all();
    }

}

3:创建一个名为Models的文件夹,将模型放在其中,并确保它们的命名空间反映路径(然后像选项1和选项2中那样调用模型):

代码语言:javascript
运行
复制
// app/Models/Course.php
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Course extends Model {

}

例如:

代码语言:javascript
运行
复制
\App\Models\Course::all();

代码语言:javascript
运行
复制
namespace Your\Namespace;

use App\Models\Course;

class YourClass {

    public function yourFunction()
    {
        Course::all();
    }

}
票数 1
EN

Stack Overflow用户

发布于 2015-04-17 21:43:03

这就是名称空间的工作方式。如果您指定了一个类,PHP将始终相对于当前名称空间搜索它。除非您在文件前面加上反斜杠并使用完整路径,或者在文件的开头添加导入语句:

代码语言:javascript
运行
复制
namespace App\Http\Controllers;

use App\Models\Course;

class ...

代码语言:javascript
运行
复制
\App\Models\Course::all();

我应该补充说,许多编辑器和IDE都能够自动解析和导入类,所以使用正确的工具就不会那么麻烦了……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29700870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档