我有这个奇怪的错误......我显然不能在我的项目中使用我的任何模型类.. Ad_category模型
class Ad_category extends Eloquent {
protected $table = 'ad_category';
protected $fillable = array('*');
use SoftDeletingTrait;
protected $dates = ['deleted_at'];
}
调用此
$ad_cat=Ad_category::find(1);
错误
`Symfony \ Component \ Debug \ Exception \ FatalErrorException (E_ERROR)
Class 'Ad_category' not found `
答案 0 :(得分:2)
PHP框架使用一个名为" autoloading"的系统。在要使用类时,在正确的类定义文件中自动include
或require
。 Laravel 4.2中的自动加载有点transitional spot,这意味着您的问题有多个答案。
默认情况下,Laravel 4.2将在以下四个位置之一中查找名为Ad_category
的类。
app/commands/Ad/category.php
app/controllers/Ad/category.php
app/models/Ad/category.php
app/database/seeds/Ad/category.php
也就是说,Laravel的自动加载器会自动将Ad_category
转换为文件路径Ad/category.php
,然后检查该文件的每个配置的自动加载路径。您可以在
#File: app/start/global.php
ClassLoader::addDirectories(array(
app_path().'/commands',
app_path().'/controllers',
app_path().'/models',
app_path().'/database/seeds',
));
Laravel 4.2也使用基于作曲家的自动加载。具体来说,是使用称为classmap
自动加载的非常激进的作曲家自动加载形式。如果你查看composer.json
文件,就会看到像这样的部分
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
手动运行命令时
$ composer dumpautoload
Composer将浏览上一节中的每个文件夹并查找PHP类文件。如果找到,则将其添加到vendor/composer/autoload_classes.php
中的类图中。 Composer还会在更新期间自动运行此命令。
所以,这意味着,如果你在一个与Laravel希望找到它不同的位置定义Ad_category
,你可以逃脱运行
$ composer dumpautoload
并且Laravel将使用Composer的自动加载器来查找您的课程。