Laravelでモデルをロードする方法
-
21-12-2019 - |
質問
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
を使用したモデル方式を単にプレフィックスします。
ファサードを使いたいのなら、あなたは私の答えに従うことができますファサードの作成方法について