Laravel 5.2 - 从控制器创建数据库表

8

如果这个问题已经被问过了,我很抱歉,但是我似乎找不到正确的答案。

我需要从控制器中创建一个数据库表。

我曾天真地认为以下代码会起作用:

    Schema::connection('mysql')->create('mytable_'.$id, function($table)
    {
        $table->increments('id');
        $table->timestamps();
    });

其中$id是传递给控制器函数的动态值。

我已将以下内容放置在顶部:

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

没有成功 - 如何在控制器中创建数据库表?有什么想法吗?

错误: enter image description here

解决方法 正如Ben Swinburne在第一条评论中所说,缺少了use Schema


发生了什么?你收到了错误吗?您还需要使用use Schema才能使用模式门面。 - Ben Swinburne
你说得对...我只是忘记使用模式...非常感谢你。 - Inigo EC
发布了一个答案,以便将该问题从未回答的列表中移除。 - Ben Swinburne
DB::select('your raw query here') 除了 SELECT 语句之外,还能处理其他的查询语句吗? - Claudio King
@ClaudioKing 你应该使用 DB::statement() - Ben Swinburne
2个回答

5

您正在使用Schema门面。

请确保在文件顶部也有use Schema;


1

我认为最好的方法是创建一个迁移并运行php artisan migrate命令从您的控制器

Artisan::call('migrate');

如果你不知道如何使用stubs从代码中创建迁移,你可以从一些写得很好的包中学习。我已经从这个包学会了如何做到这一点。
希望这能帮到你。

有时候你只需要在控制器中创建一个表。例如:我正在导入一些联系人,希望将它们加载到一个临时表中,然后稍后再删除它。显然,我不能使用通用的公共表,因为在多用户环境下,可能会有多个人使用“通用表”。 - Azmeer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接