我正在尝试在laravev4.1中使用类名为User的User模型中的自定义方法。我将$table属性更改为表名,并在用户模型中添加了一个名为"public function abc"的自定义方法。然后在我的用户控制器中,我这样尝试:-
$u= new User;
$u->abc();
但它不工作,并给出以下错误:-
BadMethodCallException调用未定义的方法Illuminate''Database''Query''Builder::abc()
我不知道为什么会发生这种事,一切看起来都很好,帮我解决这个问题。
更新:解决了,什么都没做我不知道拉拉威尔出了什么问题$u= new user;
$u->abc();
我刚把用户改成了用户,它开始工作了,我甚至不知道为什么,有人知道原因吗??
模型上的每个方法都会传递给新的QueryBuilder
User::where()
User::find()
User::{relationship}()
如果你实例化一个像这样的模型
$user = User::find()->method();
它会起作用的。不要试图让你的Eloquent模特太胖。只需创建一个存储库,通过使用Eloquent提供的工具(关系、隐藏属性、访问器和赋值器、$this->appends…),使您的控制器尽可能薄,使Eloquet尽可能智能
其他一切都属于您的存储库。
尝试运行
composer dumpautoload
如果这不起作用,请确保在整个项目中只有一个名为User的类。可能存在具有相同名称的包、迁移或其他内容。尝试将自定义User类放入命名空间中。