php - 无法使用 Eloquent 即时创建新表

标签 php mysql laravel eloquent

我将 Eloquent 与 SlimPHP 和 Capsule 一起用作数据库“门面”。

现在我只是为 MySql 提供支持,因为我需要动态创建表,所以我正在尝试构建两个查询并运行它们。

DB::raw($create_table_statement);
DB::raw($add_keys_statement);

做的时候

var_dump($create_table_statement);
var_dump($add_keys_statement);

要查看查询是如何构建的,它们是这样的:

string(351) "CREATE TABLE IF NOT EXISTS `responses_44` (`id` int(11) NOT NULL AUTO_INCREMENT,`field_20` varchar(150),`field_21` varchar(150),`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',`form_id` int(11) NOT NULL,primary key(id)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;"

string(158) " ALTER TABLE `responses_44` ADD KEY `form_id` (`form_id`), ADD CONSTRAINT `responses_44_ibfk_1` FOREIGN KEY (`form_id`) REFERENCES `forms` (`id`);"

通过直接在 MySql 上测试查询,它们可以毫无错误地执行并创建表,但是当应用于 DB::raw 时,不会抛出任何错误,并且 DB::getQueryLog () 不显示它们。

会发生什么?

谢谢

最佳答案

DB::statement($create_table_statement);

这就是您所需要的。 DB::raw 不运行任何东西,它只是一个从未被构建器绑定(bind)的包装器,而是以原始形式传递给查询,没有转义任何东西。

您可以使用 ? 占位符并将第二个参数与绑定(bind)传递给 statement 方法。

关于php - 无法使用 Eloquent 即时创建新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29527811/

相关文章:

php - 将csv文件上传到MySQL数据库而不逐行插入

php - 将 POST 发送到服务器上的 PHP 脚本

php - 将本地主机 PHP 转换为 PDF

php - 注入(inject)绑定(bind)到服务容器的实例

php - mySQL 与 PHP 到 JSON 用于客户端图表

php - PDO MySQL 创建名称为数字的表

mysql - mysql查询与oracle查询相比的性能问题

Mysql SELECT 里面的 UPDATE

python - 无法在 Python 中使用 MySQL 将值插入表中

php - 不能要求 laravel/passport 与 Composer