2015-12-22 4 views
7

文字列でLaravelモデルを呼び出すことはできますか?文字列でLaravelモデルを呼び出す

これは私が達成しようとしているが、その失敗てるものです:はい、あなたがこれを行うことができ

exception 'ErrorException' with message 'Undefined variable: User' 
+1

は '$のMODEL_NAMEのような完全な名前空間を使用してみてください= 'アプリケーションは\ HTTPはモデル\ユーザー\';働いたが、' –

+0

イム実際のインスタンスからそれをやろうとしています$ {$ this-> model_name} :: where' –

+0

あなたのコメントを記入してください。 –

答えて

12

ていますが、使用する必要があります。

$model_name = 'User'; 
$model_name::where('id', $id)->first(); 

は、私は次の例外を取得します完全修飾クラス名:

$model_name = 'App\Model\User'; 
$model_name::where('id', $id)->first(); 

モデル名がプレーン変数以外に格納されている場合(例:トリビュート)、これを動作させるために中間変数を使用する必要があります。

$model = $this->model_name; 
$model::where('id', $id)->first(); 
3

これを試してみてください:

$model_name = 'User'; 
$model = app("App\Model\{$model_name}"); 
$model->where('id', $id)->first(); 
関連する問題