$nameTemplate=“prefix_“;
$tables = DB::select(“SHOW TABLES LIKE ‘$nameTemplate%’“);
这将返回为prefix_somename,因此也以prefix另一个名命名。如何只返回第一个结果?
$nameTemplate = ‘prefix_‘;
$tables = DB::connection()->getDoctrineSchemaManager()->listTableNames();
$tables = collect($tables);
$tables->contains(function ($item) use ($nameTemplate) {
return (strpos($item, $nameTemplate) !== false);
});
这将返回所有表。错误在哪里?
答案 0 :(得分:1)
您可以尝试过滤结果,如下所示:
tablist
$tables = collect($tables)->filter(function($item) use ($nameTemplate) {
return strpos($item, $nameTemplate) !== false;
});
此处应仅包含基于您的过滤器的表。
答案 1 :(得分:0)
我发现问题表达的第一部分是否可以在“ _”之前使用反斜杠
$nameTemplate=“prefix\_“;
答案 2 :(得分:0)
尝试
$nameTemplate="prefix_";
$tableNames = \Schema::getConnection()->getDoctrineSchemaManager()->listTableNames();
foreach ($tableNames as $tableNameValue)
{
if (strpos($tableNameValue, $nameTemplate) !== false)
{
dd('table found in serach criteria ');
}
else
{
dd('table not found in serach criteria ');
}
}