0

我搜索了类似的问题,但我得到的只是“如果不存在则创建表”。

这根本不是我想要的!我只想检查 5 个需要的表是否存在,创建它们是完全不同的事情。

这意味着我只想要“如果不存在”部分,没有“创建表”。有没有办法用 Idiorm 做呢?

P/S:如果可能,请写下整个代码行(例如 ORM::raw_execute('query') 或其他东西)。我几乎没有使用数据库查询的经验:()

4

2 回答 2

1

在花了几个小时之后,问题来了:“我如何在 paris/idiorm 中运行执行 sql 查询并获得查询结果?”

Ididorm 的 raw_execute() 不返回查询结果,而是在查询成功执行时返回 true,否则返回 false。

最后,我解决了这个问题:

ORM::for_table('')->raw_query("SQL查询检查表是否存在")->find_one();

我没有将表名作为 for_table() 的参数,而是给它一个空字符串,然后调用 raw_query(),这相当于直接调用原始查询。它在我的情况下有效。我还必须重置 Idiorm 的数据库连接并清除缓存,以便在不同数据库之间切换时它可以工作。

于 2013-09-04T07:44:10.790 回答
0

在 MySql 上,您可以查询information_schema.tables视图

SELECT n.table_name,
       case when x.table_name is null
            then 'Does not exist'
            else 'Exists'
       end as chk
FROM (
    select 'mytable' as table_name union all
    select 'table1' union all
    select 'tbl1' union all
    select 'another_table' union all
    select 'fifth_table'
) n
LEFT JOIN information_schema.tables x
ON ( x.table_schema = 'test' AND x.table_name = n.table_name );



+ --------------- + -------------- +
| table_name      | chk            |
+ --------------- + -------------- +
| mytable         | Exists         |
| tbl1            | Exists         |
| table1          | Does not exist |
| another_table   | Does not exist |
| fifth_table     | Does not exist |
+ --------------- + -------------- +
于 2013-08-26T11:40:27.250 回答