connecting-a-database-to-laravel

#將資料庫連接到Laravel 此教程是Laravel手冊的一部分。從https://flaviocopes.com/access/下載它。 我們正在以非常基本的形式使用Laravel,沒有使用任何資料庫。 現在,我想設置一個資料庫並配置Laravel以使用它。 在我們配置資料庫之後,我將向您展示如何使用表單接受用戶輸入並將數據存儲在資料庫中,以及如何將這些數據可視化顯示。 我還將向您展示如何使用資料庫中的數據與動態路由。 ###將資料庫連接到Laravel 使用資料庫最簡單的方式是使用SQLite。 SQLite只是一個在您的網站上托管的文件,不需要進行特殊設置。 打開.env文件,將默認配置改為 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=root DB_PASSWORD= 添加 DB_CONNECTION=sqlite Laravel會在您第一次運行遷移時自動在database/database.sqlite中創建一個SQLite數據庫。

Laravel中的動態路由

本教程是Laravel手冊的一部分。從https://flaviocopes.com/access/下載。 我們已經了解了如何在 routes/web.php 文件中創建一個路由: Route::get('/dogs', function () { return view('dogs'); })->name('dogs'); 這是一個靜態路由,對應於 /dogs URL。 現在假設你想為每一只狗創建一個頁面,也許你會在上面填寫一個描述、一張圖片等等。 你不能為數據庫中的每一只狗創建一個靜態路由,因為你不知道狗的名字。 假設你有兩只狗,Max和Daisy,下面的代碼將在 /dogs/max 和 /dogs/daisy 上顯示一個“dog”視圖(我們尚未創建): Route::get('/dogs/max', function () { return view('dog'); }) Route::get('/dogs/daisy', function () { return view('dog'); }) 取而代之,我們在URL中有一個動態分段: Route::get('/dogs/{slug}', function () { return view('dog'); }) slug是一個用於識別URL部分的詞,全小寫且不含空格,例如如果狗的名字是Max,那麼slug就是max。 現在我們可以將slug的值傳遞給回調函數(當路由被命中時調用的函數),並在函數內部將它傳遞給視圖: Route::get('/dogs/{slug}', function ($slug) { return view('dog', ['slug' => $slug]); }) 現在$slug變量可以在Blade模板中使用。 但是我們想要檢索實際的狗的數據。我們有slug,可以想象當我們添加狗時,它存儲在數據庫中。 為此,我們在路由中使用了Dog模型,代碼如下: use App\Models\Dog; Route::get('/dogs/{slug}', function ($slug) { $dog = Dog::find($slug) return view('dog', ['dog' => $dog]); })

使用 Laravel Breeze 設置身份驗證

本教程是 Laravel 手冊的一部分,可以從 https://flaviocopes.com/access/ 下載 我們不希望隨機的人進入網站並編輯數據。 我們希望人們先登錄。 如果未登錄,他們會看到狗的列表。 如果已登錄,他們將有能力編輯列表。 Laravel 在框架中為我們提供了內置的身份驗證支持。 為了更加方便,它提供了 Breeze,這是一個應用程序的開始套件工具,可以快速創建我們所需的東西。Breeze 可以快速搭建用戶註冊、登錄、密碼重置、個人資料頁面、儀表板等等功能。它太棒了。對於更高級的需求,我們還有 JetStream,但是 Breeze 更容易設置。 首先,創建一個新的 Laravel 項目,這樣我們可以從一個空白的起點開始。 第一個項目被命名為 first,為了延續傳統,我們將這個第二個項目命名為 second: composer create-project laravel/laravel second 進入該文件夾: cd second 使用 composer 安裝 Breeze: composer require laravel/breeze --dev 現在運行下面的命令: php artisan breeze:install 然後選擇選項 0,即“blade”,並選擇其他問題的默認選項,任務腳本會自動生成遠足點的登錄系統: 現在你可以運行 php artisan serve,並打開 http://127.0.0.1:8000/。 你會看到“Log in”和“Register”鏈接: 所有的登錄功能已經可以正常使用: Laravel 添加了大量的資源來實現這一點。 對於開發者來說,這可能需要花數日的時間,而且這些代碼經過了實戰考驗,你不希望自己寫這些代碼,因為這是一個非常重要且需要進行良好的安全性測試的功能。 我建議你查看文件結構,並將其與第一個項目進行對比。許多新東西已經被添加了,例如視圖: 但在進一步之前,我們需要為此項目設置數據庫,就像我們在第一個項目中所做的那樣。我們打開 .env 文件,註釋掉以下幾行: 然後添加以下內容: DB\_CONNECTION=sqlite 以配置 SQLite 數據庫。 然後運行下面的命令: php artisan migrate 在另一個終端窗口中,運行 npm install 命令,然後運行 npm run dev 命令,這是一個長時間運行的過程,需要與 php artisan serve 一起運行(⚠️ 請確保在 second 文件夾中運行,而非 first 項目中運行,我剛剛花了15分鐘的時間才找到問題所在)。...

只有驗證過的使用者可以新增項目到資料庫

本教程是Laravel手冊的一部分。從此處下載 。 現在,讓我們重新實現第一個項目,這次當未登錄時顯示狗的列表,但只允許已登錄的使用者修改數據。 首先,我們創建一個新的遷移: php artisan make:migration create_dogs_table 打開新創建的遷移文件,在我這裡是 database/migrations/2023_05_12_164831_create_dogs_table.php <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('dogs', function (Blueprint $table) { $table->id(); $table->timestamps(); }); } /** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('dogs'); } }; 我們只需稍微修改遷移,添加了狗的名稱: Schema::create('dogs', function (Blueprint $table) { $table->id(); $table->string('name'); $table->timestamps(); }); 保存文件,返回終端,運行 php artisan migrate...

如何使用遷移來創建和修改資料庫架構

本教程是 Laravel 手冊的一部分。您可以從 https://flaviocopes.com/access/ 下載。 遷移非常適合處理資料庫的變更,這樣您就可以應用這些變更,並在需要恢復到先前狀態時回滾數據。 從終端機中停止 Laravel 伺服器,然後運行以下命令來創建一個新的遷移,我們將使用它來創建我們需要使用的資料庫表: php artisan make:migration initial_table_creation 此命令在 database/migrations 資料夾中創建了 2023_05_11_080724_initial_table_creation.php 文件(日期和時間對於您而言會有所變化)。 注意,還有其他由 Laravel 框架自身添加的遷移,用於驗證系統。 但是,我們專注於創建一個新的表,讓我們將其稱為 dogs。 進入我們剛剛建立的遷移的 up() 函數。 讓我們創建一個 dogs 表,包含 3 列,一個 id、一個 name 字符串,以及時間戳工具列(created_at 和 updated_at),我們將在後面看到。 Schema::create('dogs', function (Blueprint $table) { $table->id(); $table->string('name'); $table->timestamps(); }); 現在從終端機運行以下命令: php artisan migrate Laravel 將應用尚未應用的遷移,這在此時指的是您在 migrations 資料夾中看到的所有遷移: 如果您使用類似 TablePlus(免費版本,支持所有操作系統)的數據庫可視化工具打開 database/database.sqlite 文件,您將看到新創建的表,包括我們定義的表: 如果您在遷移中犯了錯誤,您可以使用以下命令回滾遷移中的任何更改: php artisan migrate:rollback 這將回滾您對數據庫做出的最新更改。 有關遷移的更多信息,請參閱官方遷移指南。

如何在Laravel中使用Blade模板

本教程是《Laravel手冊》的一部分。從https://flaviocopes.com/access/ 下載手冊。 Laravel的視圖文件以 .blade.php 為結尾,並且是 Blade 模板。 Blade 是一個服務端模板語言。 在其基本形式下,它就是 HTML。正如你所看到的,上面我使用的這些模板只包含 HTML。 但你可以在Blade模板中做很多有趣的事情:插入數據、添加條件語句、使用循環、根據用戶是否已驗證顯示不同內容,或根據環境變量(例如生產或開發環境)顯示不同信息,等等。 以下是Blade的入門教程(更多資訊,我強烈推薦參考 官方Blade指南)。 在路由定義中,你可以將數據傳遞給Blade模板: Route::get('/test', function () { return view('test', ['name' => 'Flavio']); }); 然後在模板中使用它: <h1>{{ $name }}</h1> {{ }} 語法允許你將任何數據添加到模板中,它會自動進行HTML轉義處理。 在其中,你還可以運行任何自己喜歡的PHP function,Blade會顯示該函數的返回值。 使用 {{-- --}} 注釋: {{-- <h1>test</h1> --}} 條件語句可使用 @if 、@else 、@endif 達到: @if ($name === 'Flavio') <h1>Yo {{ $name }}</h1> @else <h1>Good morning {{ $name }}</h1> @endif 還可以使用 @elseif 和 @unless 做更複雜的條件結構。 我們還有 @switch ,可以根据變量的結果來顯示不同的內容。...