2015-08-05 2 views
1

возможно с Laravel, чтобы получить список всех определенных моделей в массив в проекте так, чтобы они могли быть итерации в цикле т.е.Laravel Получить список моделей

foreach ($models as $model) { 
    echo $model; 
} 
+1

Все модели, называемые в контроллере или все модели в проекте? –

+0

В проекте, если возможно – NotaGuruAtAll

+0

Все ли ваши модели хранятся в одной папке? если это так, в котором – baao

ответ

3

Если все модели являются в одном каталоге вы можете перечислить файлы в этом каталоге, а затем сгенерировать имена классов на основе имен файлов. Я боюсь, что это единственный вариант, так как Laravel не требует объявления моделей в любом месте - достаточно создать класс. Более того, листинг классов, существующих в данном пространстве имен, также не будет работать, поскольку некоторые модели могут быть реализованы, просто не загружены.

Попробуйте следующий код:

<?php 
$dir = '/path/to/model/directory'; 
$files = scandir($dir); 

$models = array(); 
$namespace = 'Your\Model\Namespace\\'; 
foreach($files as $file) { 
    //skip current and parent folder entries and non-php files 
    if ($file == '.' || $file == '..' || !preg_match('\.php', $file)) continue; 
    $models[] = $namespace . preg_replace('\.php$', '', $file); 
} 

print_r($models); 
+1

это возвращает имя модели файла, а не сама модель! – user3197818

+2

это делает, и это то, что OP хотел –

Смежные вопросы