我們學過兩件事情,從controller把資料送給view
可以產生一個新的migration檔案
修改檔案後就可以執行 migrate 來建立資料表
若是執行後發現需要修改,有另一個語法
執行後把過去所有migrate動作還原(rollback),並且重新執行一遍
資料新增好之後,我們要讓Laravel取得資料庫的資料
使用
這個 DB query 語句可以取得 tasks 資料表中的資料,並且定義給 $tasks 當作變數
這時候如果直接 return $tasks 並且重整網頁
會發現頁面上變成資料庫中的資料了!
在Laravel中,直接return DB query語句就有這種效果
如此可以簡單的判斷資料來源有沒有問題
接下來,如果網址帶有參數例如
可以看到在get後面加了一個參數,而傳入的參數我們定義成 $id
dd 是 Laravel 的特殊用法,代表Dump & Die
如我們的範例,我們會在畫面上印出 "2"
再來我們試著不要把全部資料拉出來,只找特定資料
如此我們就取得網址列上傳來的參數作資料表 id 所取得的資料結果
接下來在view內新建一個資料夾tasks,並加入兩個blade模板檔案
分別是 index.blade.php和 show.blade.php
長得像這樣
和這樣
這兩個頁面分別是,顯示單一和顯示全部
可以看到 index.blade 中我們還做了超連結
至於 controller 的設定
就是分別為 /task 和 /task/{task} 設定路由,如果沒有參數就走第一個
一個把全部資料送進去,另一個只抓取參數作為篩選條件
這就是 Laravel 從資料庫傳送資料到 controller 再到 view 用 foreach 顯示在畫面上
和資料庫進行migration,現在我們要把兩件事情組在一起
一開始我們進行
php artisan make:migration {file_name} --create={tableName}
可以產生一個新的migration檔案
修改檔案後就可以執行 migrate 來建立資料表
若是執行後發現需要修改,有另一個語法
php artisan migrate:refresh
執行後把過去所有migrate動作還原(rollback),並且重新執行一遍
資料新增好之後,我們要讓Laravel取得資料庫的資料
使用
$tasks = DB::table('tasks')->get();
這個 DB query 語句可以取得 tasks 資料表中的資料,並且定義給 $tasks 當作變數
這時候如果直接 return $tasks 並且重整網頁
會發現頁面上變成資料庫中的資料了!
在Laravel中,直接return DB query語句就有這種效果
如此可以簡單的判斷資料來源有沒有問題
接下來,如果網址帶有參數例如
http://localhost:8000/tasks/2這種情境下我們可以將controller設為
Route::get('/tasks/{task}', function ($id) { dd($id); });
可以看到在get後面加了一個參數,而傳入的參數我們定義成 $id
dd 是 Laravel 的特殊用法,代表Dump & Die
如我們的範例,我們會在畫面上印出 "2"
再來我們試著不要把全部資料拉出來,只找特定資料
Route::get('/tasks/{task}', function ($id) { $tasks = DB::table('tasks')->find($id); dd ($tasks); });
如此我們就取得網址列上傳來的參數作資料表 id 所取得的資料結果
接下來在view內新建一個資料夾tasks,並加入兩個blade模板檔案
分別是 index.blade.php和 show.blade.php
長得像這樣
<!doctype html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>index.blade</title> </head> <body> <ul> @foreach($tasks as $task) <li> <a href="/tasks/{{ $task->id }}"> {{ $task->body }} </a> </li> @endforeach </ul> </body> </html>
和這樣
<!doctype html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>show.blade</title> </head> <body> <h1>{{ $task->body }}</h1> </body> </html>
這兩個頁面分別是,顯示單一和顯示全部
可以看到 index.blade 中我們還做了超連結
至於 controller 的設定
就是分別為 /task 和 /task/{task} 設定路由,如果沒有參數就走第一個
一個把全部資料送進去,另一個只抓取參數作為篩選條件
Route::get('/tasks', function () { $tasks = DB::table('tasks')->latest()->get(); return view('tasks.index') ->with('tasks', $tasks); }); Route::get('/tasks/{task}', function ($id) { $task = DB::table('tasks')->find($id); return view('tasks.show', compact('task')); });
這就是 Laravel 從資料庫傳送資料到 controller 再到 view 用 foreach 顯示在畫面上
留言
張貼留言