2015-12-02 27 views
1

我想在Laravel項目中找到所有模型,數據庫表作爲備份的列表。如何獲得Laravel中所有型號的列表?

我想這樣做來建立一個儀表板,顯示所有模型中的數據隨時間變化的方式,I.E.如果有用戶模型,則在過去90天內每天添加或修改了多少用戶。

回答

2

我會導航你的文件系統,並從你的模型文件夾中拉出所有的php文件。我把我的模型在app /模型文件夾,這樣是這樣的:

$path = app_path() . "/Models"; 

function getModels($path){ 
    $out = []; 
    $results = scandir($path); 
    foreach ($results as $result) { 
     if ($result === '.' or $result === '..') continue; 
     $filename = $path . '/' . $result; 
     if (is_dir($filename)) { 
      $out = array_merge($out, getModels($filename)); 
     }else{ 
      $out[] = substr($filename,0,-4); 
     } 
    } 
    return $out; 
} 

dd(getModels($path)); 

我只是嘗試這樣做,它吐出我的所有車型的完整的文件路徑。你可以去除字符串,使它只顯示名稱空間和型號名稱,如果這就是你要找的。

+0

好的!這讓我有用的地方實際上我可以使用它。 –

0

一種方法是使用Standard PHP Library (SPL)遞歸列出目錄中的所有文件,您可以像下面這樣創建函數。

function getModels($path, $namespace){ 
     $out = []; 

     $iterator = new \RecursiveIteratorIterator(
      new \RecursiveDirectoryIterator(
       $path 
      ), \RecursiveIteratorIterator::SELF_FIRST 
     ); 
     foreach ($iterator as $item) { 
      /** 
      * @var \SplFileInfo $item 
      */ 
      if($item->isReadable() && $item->isFile() && mb_strtolower($item->getExtension()) === 'php'){ 
       $out[] = $namespace . 
        str_replace("/", "\\", mb_substr($item->getRealPath(), mb_strlen($path), -4)); 
      } 
     } 
     return $out; 
} 
getModels(app_path("Models/"), "App\\Models\\"); 
+1

您應該添加一些關於您在做什麼以及OP在做什麼的錯誤的描述 –

+0

使用SPL遞歸列出目錄中的所有文件https://secure.php.net/manual/en/book.spl.php –

相關問題