Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 创建新模型后调用undefined方法(Laravel 4.2)_Php_Laravel_Laravel 4_Eloquent - Fatal编程技术网

Php 创建新模型后调用undefined方法(Laravel 4.2)

Php 创建新模型后调用undefined方法(Laravel 4.2),php,laravel,laravel-4,eloquent,Php,Laravel,Laravel 4,Eloquent,我刚刚建立了一个新模型,我正在尝试调用一个自定义编写的静态方法,该方法是我从一个新控制器中编写的,以匹配该模型: <?php class NewModelWebController extends AjaxController { public function newModelView() { $loggedUser = Auth::user(); $data['user'] = $loggedUser; $data['allD

我刚刚建立了一个新模型,我正在尝试调用一个自定义编写的静态方法,该方法是我从一个新控制器中编写的,以匹配该模型:

<?php

class NewModelWebController extends AjaxController {

    public function newModelView() {
        $loggedUser = Auth::user();
        $data['user'] = $loggedUser;
        $data['allDetails'] = NewModel::getFullWithDetails($loggedUser->user_id);

        return View::make('webApp::new-model.view', $data);
    }

}

尝试使用作用域而不是实际的静态方法

class NewModel extends Eloquent {

    public function scopeGetFullWithDetails($userId)
    {
        //
    }
}

打电话是一样的<代码>新模型::getFullWithDetails(1)

我最终不得不从头开始重新创建模型。在我最初创建文件时,文件编码或文件类型一定有问题,因为最初我只是复制了另一个模型类,然后更改了其中的值。创建一个全新的文件,然后将PHP内容粘贴回,修复了这个问题!谢谢你的帮助

如何在模型内调用函数?在试图调用静态方法的地方,
NewModel
use
语句是什么样子的?我已经更新了这个问题,但是对该方法的调用发生在控制器类内。就像我之前说过的,
NewModel::find(1)
在该控制器中调用时会工作,但我的自定义方法不会工作。至于
use
语句,在调用它的控制器类中没有这样的语句。我能想到的唯一一件事是,在继承/包含链层次结构的更上一层,如果有某种
use
语句,我从调用它的控制器中看不到它。但我也没有在其他类似的控制器中看到任何
使用
包含
语句@PhilI不知道Laravel,但我猜它正在注册
Builder
类作为模型符号。我会尝试使用完整的类名,例如
\Namespace\Path\To\NewModel::getFullWithDetails()
。不过,在那之后,你很可能会遇到其他问题。@phil我绝对同意这种说法,但我不确定这种说法在这种情况下是否适用。Composer确实在自动加载文件中映射了该类,因此问题似乎并不存在。不过,这很奇怪,因为我可以打电话给其他型号的手机。只是这个新模型给了我一些问题,所以很明显它没有被包括在任何地方。我也尝试过这个,但它不起作用。此外,我应该能够拥有并调用静态和非静态函数。。但我也不能这样做,只要它们是我写的。@Max您的调用可能引用了另一个类。您确定没有名为NewModel或任何其他类的别名吗?问题不在您的模型中。我在Github中搜索了新模型名称,但没有找到任何结果,因此似乎没有任何名称冲突。我还回滚了迁移,清除了缓存,并重新运行,以确保它不是数据库问题。同样的错误仍然会出现:(你的模型到底扩展了什么?确保在你的
config/app.php
中,在
alias
数组下,
Eloquent
指向
illighted\Database\Eloquent\model
。你能发布你的完整
NewModel.php
文件吗?app.php很好,并且正确地指向了Eloquent。就像我之前说的那样,我可以参考其他m。)odels在整个应用程序中都没有问题;只是新的问题让我感到悲伤。我已经更新了问题,以准确显示控制器和模型中的内容。谢谢:)正如添加的信息一样,Laravel 5似乎在Artisan CLI中支持在命令行上创建模型。不幸的是,对于我们来说,仍然停留在4上,我们必须手动执行!
class NewModel extends Eloquent {

    public function scopeGetFullWithDetails($userId)
    {
        //
    }
}