2016-10-26 5 views
1

У меня возникла проблема при работе в проекте Laravel.Метод [где] не существует

Метод [где] не существует. Я знаю, что предложение «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 требует, чтобы это было множественное число вашей модели.

Может ли кто-нибудь помочь мне в этой ситуации?

+0

Не стоит ???? :: где быть моделью? – RiggsFolly

+0

Есть функция внутри вашего контроллера под названием Track? и если да, тогда убедитесь, что у вас есть 'public' infront' function where' – FluxCoder

+0

Если у вас есть контроллер под названием «Track» и модель под названием «Track», разве это не путает? –

ответ

0

Ваша проблема в том, что у вас есть как контроллер, так и модель с именем Track. И когда вы используете Track::where(), он предполагает, что метод вызывается в вашем контроллере.

К сожалению, вы не можете просто импортировать свою модель как Track, потому что тогда возник конфликт имен.

Вам понадобится псевдоним вашей модели Track.

В ваших операторах импорта (use), добавьте следующий ...

use App\Track as TrackModel; 

Это предполагает ваши модели в App пространства имен. И изменить свой код ...

TrackModel::where()... 

Это должно заставить его работать. Однако я настоятельно рекомендую вам использовать правильные соглашения об именах. Вероятно, вы столкнетесь со многими другими подводными камнями, идущими по этому пути, чего легко избежать. Контроллеры должны заканчиваться на Controller.

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 
       ); 
Смежные вопросы