2016-10-26 18 views
1

Laravelプロジェクトで作業中に問題が発生しました。メソッド[where]が存在しません

メソッド[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には、複数のモデルが必要です。

誰でもこの状況で私を助けてくれますか?

+0

になるので、私のモデルの前に\アプリケーション\をuseingによってモデル化するために参照する必要がありました

は????べきではない::モデルもどこ? – RiggsFolly

+0

コントローラの内部にTrackという機能がありますか?そうであれば、 'function'の前に' public'を必ず入れてください。 – FluxCoder

+0

'Track'というコントローラと' Track'というモデルがあれば、それは混乱の原因になりませんか? –

答えて

0

あなたの問題はコントローラとモデルの両方がTrackということです。 Track::where()を使用すると、コントローラでwhereメソッドが呼び出されているとみなされます。

残念ながら、Trackという名前でモデルをインポートするだけでは、名前の競合が発生する可能性があります。

Trackモデルのエイリアスが必要です。あなたのimport文で

use)、これは、あなたのモデルがApp名前空間にあると仮定し、次...

use App\Track as TrackModel; 

を追加します。あなたのコードを変更してください。

TrackModel::where()... 

これはうまくいくはずです。ただし、適切な命名規則を使用することを強くお勧めします。あなたは、この道を歩む落とし穴に簡単に避けることができます。コントローラーはControllerで終了する必要があります。

1

問題が解決しました。 コントローラ(トラック)とモデル(トラック)の名前が同じであるために問題が発生しました。私は私のコードは

$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 
       ); 
関連する問題