未定义的方法 File::save() (Laravel模型).


Undefined method File::save() (Laravel model)

我正在使用Laravel来构建一个新的Web项目。我正在使用Eloquent(其ORM)来完成所有与数据库相关的事情。我有一个SQLite数据库,有两个表:"图像"和"文件"。因此,我有两个模型:"图像.php"(类图像扩展雄辩)和"文件.php"(类文件扩展雄辩)。

根据文档,我做对了。我尝试使用图像模型并且工作完美。模型的典型使用示例:

$image = new Image;
$image->val1 = $val1;
$image->val2 = $val2;
$image->save();

但是,由于某种原因我不知道,文件模型未按预期工作。我检查了所有内容:表名,类名,文件名,表...对我来说似乎还可以。我尝试做基本相同的事情:

$file = new File;
$file->val1 = $val1;
$file->val2 = $val2;
$file->save();

尝试运行它时,我得到:

调用未定义的方法 Illuminate''Support''Facades''File::save()

如果我在保存之前执行 var_dump(),似乎正在加载模型:

object(Illuminate'Support'Facades'File)#133 (4) {
    ["val1"]=> string(8) "abcdef" 
    ["val2"]=> string(10) "ghijkl" 
}

我在这里错过了什么?

在这种情况下

,File 是一个保留字,因为它是以下外观的别名(在/app/config/app.php 中定义)

'File' => 'Illuminate'Support'Facades'File',

将模型名称更改为其他名称,所有代码都应该可以正常工作。

如果您使用任何保留关键字作为模型名称,则会出现此问题。例如:

请求

文件。。等

对于正在搜索类似问题的人,请记住您的模型类的名称必须是单数。

class Client extends Eloquent {
protected $table = 'promociones';        
}

然后,在控制器中:

client = new Client;