Laravel 5 中的文件上传和数据库设计
File Upload and Database design in Laravel 5
在我的项目中,我有用户table,我想存储每个用户上传的文件。
我的数据库方法 - 我想要以下设计,而不是直接将每个用户的文件存储在每个用户的行中:
+-----------+-------------+--------------+
| user_id | user_name | folder_path |
+-----------+-------------+--------------+
| U123 | Sherlock | xyzdsalfb |
+-----------+-------------+--------------+
此处数据库中的每个用户行将包含 link/path 到每个用户专用的 folder/repo,以便只有该用户可以使用登录访问它。
然后我需要在用户仪表板页面上的列表中显示用户上传的文件。
当前的数据库设计是:
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');
}
}
怎么做。
您需要创建一个新的迁移以将列添加到您的 table。 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');
});
}
}
在我的项目中,我有用户table,我想存储每个用户上传的文件。 我的数据库方法 - 我想要以下设计,而不是直接将每个用户的文件存储在每个用户的行中:
+-----------+-------------+--------------+
| user_id | user_name | folder_path |
+-----------+-------------+--------------+
| U123 | Sherlock | xyzdsalfb |
+-----------+-------------+--------------+
此处数据库中的每个用户行将包含 link/path 到每个用户专用的 folder/repo,以便只有该用户可以使用登录访问它。 然后我需要在用户仪表板页面上的列表中显示用户上传的文件。
当前的数据库设计是:
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');
}
}
怎么做。
您需要创建一个新的迁移以将列添加到您的 table。 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');
});
}
}