2017-12-14 3 views
1

私のアプリですべてのEloquentモデルのリストを取得する方法を見つけることを望んでいます。多分私は反射を使用する必要があります。LaravelのすべてのEloquentモデルを取得するには?

これは私がやろうとしたものです。 get_declared_classes()

  1. が文字列でないオブジェクトの配列を返します。しかし、これは動作しません。
  2. には、モデルクラスは表示されません。

<?php 
namespace App\Providers; 

use Illuminate\Database\Eloquent\Model; 
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; 

class IdentifierGeneratorServiceProvider extends ServiceProvider 
{ 
    public function boot() 
    { 
     foreach (get_declared_classes() as $class) { 
      if (!($class instanceof Model)) { 
       continue; 
      } 
      // At this point I know that $class is an instance of Illuminate\Database\Eloquent\Model 
      // I should be able to call any method of the Model object 
      // like this $class->getIncrementing(); 
     } 
    } 

    public function register() 
    { 

    } 
} 

答えて

0

可変変数/可変の力を使うことができます。

foreach (get_declared_classes() as $class) { 
    $c = new $class; 
    if ($c instanceof Model) { 
     // it is a model 
     $c->getIncrementing(); 
    } 
} 

オブジェクトのインスタンス化にtry catchを使用すると、エラーをキャッチできます。

関連する問題