2016-11-19 6 views
-1
#1 
Class controller { 
    $customer = Model\customer::find($id); 
} 

#2 
Class controller { 
    $customer = new Model\customer; 
    $customer = $customer->data($id); 
} 

Class Model { 
    public function data($id) { 
     return self::find($id); 
    } 
} 

私はlaravaで新しく、MVCクエリについて質問があります。コントローラまたはモデルクラス内のLaravel place query

私は多くの人が、私は通常、モデルクラスの内部でクエリを置くのが好き#1

のように、コントローラの内部のクエリを入れて見ました。

どのような提案ですか?

+1

あなたの質問は何ですか? – curt

答えて

1

私によれば、MVCはModel View Controllerを意味します。 ビューにあなたが常に表示データを取り込むために、変数を使用する必要があり、最後のでコントローラーが要求をキャッチするために一般的で、実行して応答を送信するのに対し、一般的な言語モデルで

は、データベースクエリに関連詰め込むが含まれている必要があります要求に応じていくつかの論理機能。私の意見では、このことができます

・ホープ - どのようなものになるかMVCコード構造ビュー

<html> 
    ... 
    YOUR_CONTENT_HERE 
    ... 
</html> 

とコントローラの場合は

の場合

<?php 

namespace App\Models; 

class ExampleModel 
{ 
    // All the database related methods like - all, paginate, find, where, etc would goes in the model... 
} 

<?php 

namespace App\Controllers; 

class ExampleController 
{ 
    public function index() 
    { 
     $request = request()->all(); 
     ... do some logical work here ... 
     return response($data); 
    } 
} 

ザッツ!

+0

はい私はmvcを理解していますが、laravelで新しいものがあり、多くのpplモデルの静的メソッドがコントローラでクエリを行うのを見たことがあるので、#2に行ってください。 –

+0

あなたはMVCが難しくて速いルールではありませんが、私はあなたのモデル関数内のDBクエリ関連のものを行い、コントローラからそれらを呼び出すべきだと思います... –

1

モデルのfind()メソッドを直接使用してエンティティを取得しても問題ありません。

しかし、より大きなアプリケーションを開発する場合は、すべてのロジックを独自のクラスに移行することを検討する必要があります。コントローラーは、httpリクエスト、セッションなどからの入力を収集し、実際の作業を行うためにサービス上のメソッドを呼び出すだけです。そうすれば、あなたのコードはコントローラのアクションやルートに貼り付けられません。