零、專案總藍圖
01.可登入的Laravel 12 專案
02.資料夾結構+資料庫設計
03.檔案上傳/列表
04.檔案下載/刪除
05.權限與Policy
06.分享連結
07.UI優化+README
一、建立 Laravel 12 專案
01.指令:composer create-project laravel/laravel drive-clone
cd drive-clone
02.設定 .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=drive_cloud
DB_USERNAME=root
DB_PASSWORD=
03.指令:php artisan migrate
二、安裝登入系統(Breeze)
01.指令:composer require laravel/breeze --dev
三、建立 Folder Model 與 Migration
1.指令:php artisan make:model Folder -m
2.編輯 database/migrations/xxxx_create_folders_table.php
2.編輯 database/migrations/xxxx_create_folders_table.php
$table->foreignId('user_id')->constrained()->cascadeOnDelete();
$table->foreignId('parent_id')->nullable()->constrained('folders')->cascadeOnDelete();
$table->string('name');
如下圖:
3.指令:php artisan migrate
四、Folder 關聯(Model)
1.編輯 app/Models/Folder.php
如下圖:
五、FolderController
四、Folder 關聯(Model)
1.編輯 app/Models/Folder.php
protected $fillable = ['name','parent_id','user_id'];
public function children() {
return $this->hasMany(Folder::class, 'parent_id');
}
public function parent() {
return $this->belongsTo(Folder::class, 'parent_id');
}
五、FolderController
1.指令:php artisan make:controller FolderController
2.編輯 app/Http/Controllers/FolderController.php
public function store(Request $request) {
Folder::create([
'name' => $request->name,
'parent_id' => $request->parent_id,
'user_id' => auth()->id(),
]);
return back();
}
如下圖:
六、Folder Route
1.編輯 routes/web.php
// Folder
Route::post('/folders', [FolderController::class, 'store'])->name('folders.store');
如下圖:
七、File Model
1.指令:php artisan make:model File -m
2.編輯 database/migrations/xxxx_create_files_table.php
如下圖:
$table->foreignId('user_id')->constrained()->cascadeOnDelete();
$table->foreignId('folder_id')->nullable()->constrained()->cascadeOnDelete();
$table->string('original_name');
$table->string('path');
$table->bigInteger('size');
$table->string('mime_type');
八、檔案上傳
1.指令:php artisan make:controller FileController
2.編輯 app/Http/Controllers/FileController.php
如下圖:
public function upload(Request $request) {
$file = $request->file('file');
$path = $file->store('user-files/', auth()->id());
File::create([
'user_id' => auth()->id(),
'folder_id' => $request->folder_id,
'original_name' => $file->getClientOriginalName(),
'path' => $path,
'size' => $file->getSize(),
'mime_type' => $file->getMimeType(),
]);
return back();
}
九、建立主畫面(Drive 頁)
1.編輯 routes/web.php








沒有留言:
張貼留言