質問

Laravelの研究を開始し、モデルを使って問題に走った。それらをどのようにロードするか?たとえばCodeIgniterでは、$model = $this->load->model('some_model')のように使用しました。Laravelでは、Sites::OfUser()のようにコントローラからそれを呼び出すとうまくいきますが、Sites::getId()を呼び出すと、そのメソッドは静的であるべきです... 静的なしで方法を呼び出すことは可能ですか、または各モデルのファサードを作成する必要がありますか?

私のモデルはこのように見えます:

namespace Models;

use Eloquent;

class Sites extends Eloquent {

    public function scopeOfUser($query)
    {}

    public function getId($name)
    {}
}
.

役に立ちましたか?

解決

静的方式の場合 -

$ type= sites :: scopeofuser($ query);

そしてあなたがコーディネーターのように普通のように望むならば -

$ model= new sites();
$ type= $ model-> scopeofuser($ query);

他のヒント

もちろんモデル内で静的メソッドを作成し、その中に静的な作業を行います(名前または何でもIDを取得)。

それは問題ありません。

しかし、あなたがしていない::を使用する場合は静的を宣言する必要があります。

public static /* <-- this */ function getId($name)
{
    // Do work
    // return $result;
}
.

::を使用してメソッドにアクセスしたい場合は、静的メソッドを作成したり、ファサードを作成する必要があります。

Sites::OfUser()が "Working"の理由は、そのメソッドをscopeとの接頭辞付きです。

スコープモデル内のクエリロジックを簡単に再利用できます。に スコープを定義してください.scopeを使用したモデル方式を単にプレフィックスします。

ファサードを使いたいのなら、あなたは私の答えに従うことができますファサードの作成方法について

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top