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

时间:2013-09-09 14:37:42

标签: php database model laravel eloquent

我正在使用Laravel构建一个新的Web项目。我正在使用Eloquent(它的ORM)来完成所有与数据库相关的东西。我有一个带有两个表的SQLite数据库:'images'和'files'。因此,我有两个模型:'Image.php'(类Image扩展Eloquent)和'File.php'(类File扩展Eloquent)。

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

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

但是由于某些原因我不知道,File模型没有按预期工作。我检查了一切:表名,类名,文件名,表......对我来说似乎没问题。我尝试做的基本相同:

$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" 
}

我在这里缺少什么?

3 个答案:

答案 0 :(得分:12)

在这种情况下,文件是一个保留字,因为它是以下Facade的别名(在/app/config/app.php中定义)

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

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

答案 1 :(得分:0)

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

请求

档案..等等

答案 2 :(得分:-1)

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

class Client extends Eloquent {

protected $table = 'promociones';        

}

然后,在你的控制器中:

client = new Client;