方法[where]不存在

时间:2016-10-26 16:07:48

标签: php mysql laravel-5

我在Laravel项目中工作时遇到了问题。

方法[where]不存在。我知道'Where'条款导致它。

我研究了它,但找不到解决方案。最后我不得不问这里。

$data = Track::where(
                [
                    ['generated_by', '=', Input::get('user_id')],
                    ['id', '=',Input::get('track_id') ],
                ])->get();


            $finalResult = array('code' => 100,
                'msg' => 'Your Account is found.',
                'data' => $data
                );

我的控制器名称是Track。我还制作了一个名为Track的模型。相应的表名为tracks,因为laravel要求它是您的模型的复数。

在这种情况下,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

解决了问题。 问题是因为我有相同名称的控制器(Track)和我的模型(Track)。

我必须在我的模型前面使用\ App \来引用模型所以我的代码将成为

$data = \App\Track::where(
                [
                    ['genrated_by', '=', Input::get('user_id')],
                    ['id', '=',Input::get('track_id') ],
                ])->get();


            $finalResult = array('code' => 100,
                'msg' => 'Your Account is found.',
                'data' => $data
                );

答案 1 :(得分:0)

您的问题是您有一个名为Track的控制器和模型。当你使用Track::where()时,它会假设你的控制器中调用了where方法。

很遗憾,您无法将模型导入为Track,因为这样会出现命名冲突。

您需要为Track模型添加别名。

在导入语句(use)中,添加以下内容......

use App\Track as TrackModel;

这假设您的模型位于App命名空间中。并修改你的代码...

TrackModel::where()...

这应该让它运作起来。但是我强烈建议您使用正确的命名约定。你可能会遇到很多陷入这条路的陷阱,很容易避免。控制器应以Controller结束。