嗨,有人能为我澄清这一点吗?我有一个相当大的Laravel 4应用程序,使用了几个型号。我想升级到L5,只是想在控制器中使用相同的模型调用。例如:
Course::
\Course:: //if controller in a deeper folder
课程模型在App/Models中。我尝试了一个作曲家映射应用程序/模型,但没有用。
谢谢
发布于 2015-04-17 22:53:12
我不知道其他人。但是在我安装的Laravel5中,我的模型是直接在app
文件夹中定义的。app
目录的名称空间为App
。
composer.json
"autoload": {
...
"psr-4": {
"App\\": "app/"
}
}
然后在App
名称空间下定义模型。例如:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Course extends Model {
}
因此,您可以选择:
1:无论何时使用,都会使用模型的完整路径:
\App\Course::all();
2:像往常一样在使用模型之前对模型执行 use
:
namespace Your\Namespace;
use App\Course;
class YourClass {
public function yourFunction()
{
Course::all();
}
}
3:创建一个名为Models
的文件夹,将模型放在其中,并确保它们的命名空间反映路径(然后像选项1和选项2中那样调用模型):
// app/Models/Course.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Course extends Model {
}
例如:
\App\Models\Course::all();
或
namespace Your\Namespace;
use App\Models\Course;
class YourClass {
public function yourFunction()
{
Course::all();
}
}
发布于 2015-04-17 21:43:03
这就是名称空间的工作方式。如果您指定了一个类,PHP将始终相对于当前名称空间搜索它。除非您在文件前面加上反斜杠并使用完整路径,或者在文件的开头添加导入语句:
namespace App\Http\Controllers;
use App\Models\Course;
class ...
或
\App\Models\Course::all();
我应该补充说,许多编辑器和IDE都能够自动解析和导入类,所以使用正确的工具就不会那么麻烦了……
https://stackoverflow.com/questions/29700870
复制相似问题