我想在Laravel項目中找到所有模型,數據庫表作爲備份的列表。如何獲得Laravel中所有型號的列表?
我想這樣做來建立一個儀表板,顯示所有模型中的數據隨時間變化的方式,I.E.如果有用戶模型,則在過去90天內每天添加或修改了多少用戶。
我想在Laravel項目中找到所有模型,數據庫表作爲備份的列表。如何獲得Laravel中所有型號的列表?
我想這樣做來建立一個儀表板,顯示所有模型中的數據隨時間變化的方式,I.E.如果有用戶模型,則在過去90天內每天添加或修改了多少用戶。
我會導航你的文件系統,並從你的模型文件夾中拉出所有的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));
我只是嘗試這樣做,它吐出我的所有車型的完整的文件路徑。你可以去除字符串,使它只顯示名稱空間和型號名稱,如果這就是你要找的。
一種方法是使用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\\");
您應該添加一些關於您在做什麼以及OP在做什麼的錯誤的描述 –
使用SPL遞歸列出目錄中的所有文件https://secure.php.net/manual/en/book.spl.php –
好的!這讓我有用的地方實際上我可以使用它。 –