我将Eloquent与SlimPHP和Capsule一起用作DB"Facade"。
现在我只是支持MySql,因为我需要动态创建表,所以我尝试构建两个查询并运行它们。
DB::raw($create_table_statement);
DB::raw($add_keys_statement);
进行时
var_dump($create_table_statement);
var_dump($add_keys_statement);
要查看查询是如何构建的,它们是这样的:
串(351)";如果不存在,则创建表`responses_4`(`id`int(11)NOT NULL AUTO_INCREMENT,`field_20`varchar(150),`field_21`varchar"
字符串(158)";ALTER TABLE `responses_4`ADD KEY`form_id`(`form_id``),ADD CONSTRAINT`responses''u44_ibfk_1`FOREING KEY(`form_id`)REFERENCES`forms`(`id`)"
通过直接在MySql上测试查询,它们可以在没有错误的情况下执行并创建表,但是,当应用于DB::raw
时,不会引发错误,DB::getQueryLog()
也不会显示它们。
会发生什么?
感谢
DB::statement($create_table_statement);
这就是你所需要的。DB::raw
不运行任何内容,它只是一个从未被构建器绑定的包装器,而是以原始形式传递给查询,而不转义任何内容。
您可以使用?
占位符,并将绑定的第二个参数传递给statement
方法。