Laravel 5中的文件上载和数据库设计

时间:2015-03-10 09:20:28

标签: laravel-4 laravel-5

在我的项目中,我有用户表,我想存储每个用户的上传文件。 我的数据库方法 - 不是每个用户直接按行存储文件,我想要以下设计:

+-----------+-------------+--------------+
|  user_id  |  user_name  |  folder_path |
+-----------+-------------+--------------+
|  U123     |  Sherlock   |  xyzdsalfb   |
+-----------+-------------+--------------+

此处数据库中的每个用户行都包含每个用户的专用文件夹/存储库的链接/路径,以便只有该用户才能使用登录访问它。 然后我需要在用户仪表板页面的列表中显示用户上传的文件。

当前的数据库设计是:

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

class CreateUsersTable extends Migration {

    public function up()
    {
        Schema::create('users', function(Blueprint $table)
        {
            $table->increments('id'); //we need enroll number too
            $table->string('name');
            $table->string('enroll_no')->unique(); //we'll change this to bigInteger
            $table->string('course');
            $table->string('majors');
            $table->string('email')->unique();
            $table->string('password', 60);
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('users');
    }
}

怎么做。

1 个答案:

答案 0 :(得分:2)

您需要创建新的迁移以向表中添加列。 Per the docs首先运行:

php artisan make:migration add_your_columns_to_users_table --table=users

这将生成您的迁移。您需要查看Laravel文档,以便使用迁移添加正确的列来向数据库添加列:

http://laravel.com/docs/5.0/schema#adding-columns

folder_path添加列的快速示例如下:

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

class CreateUsersTable extends Migration {

    public function up()
    {
        Schema::table('users', function(Blueprint $table)
        {
            $table->string('folder_path');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('users', function(Blueprint $table)
        {
            $table->dropColumn('folder_path');
        });
    }
}