PHP Laravel-如何通过名称模板选择mysql表名称

时间:2019-01-17 12:25:04

标签: php mysql laravel

$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);
});

这将返回所有表。错误在哪里?

3 个答案:

答案 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 ');
            }

        }