我正在尝试在用户模型中使用自定义方法,并在laravel4.1中使用类名User。我将$ table属性更改为我的表名,并在用户模型中添加了自定义方法名称'public function abc'。然后在我的用户控制器中我尝试这样: -
$u= new User;
$u->abc();
但它不起作用并发出以下错误: -
BadMethodCallException 调用未定义的方法Illuminate \ Database \ Query \ Builder :: abc()
我不知道为什么这一切似乎都很好,帮助我这些家伙。
更新:已解决,完成任何事情
我不知道什么是LARAVEL的问题
$u= new user;
$u->abc();
我刚刚将User更改为用户并开始工作,我甚至不知道为什么,任何人都知道原因??
答案 0 :(得分:0)
Model上的每个方法都传递给一个新的QueryBuilder
User::where()
User::find()
User::{relationship}()
如果你实例化这样的模型
$user = User::find()->method();
它会起作用。不要试图让你的Eloquent模型太胖。 只需创建一个存储库,通过使用Eloquent提供的工具(关系,隐藏属性,访问器和扩展器,$ this->追加,......),使控制器尽可能地薄,并使您的Eloquent尽可能地智能化。 )
其他所有内容都属于您的存储库。
答案 1 :(得分:0)
尝试运行
composer dumpautoload
如果这不起作用,请确保整个项目中只有一个名为User的类。可能有包,迁移或具有相同名称的内容。尝试将自定义User类放在命名空间中。