2014年12月17日 星期三

Laravel 教學 db取值 分頁顯示

範例結果會長的像這樣↑

db的取值在laravel裡真的是一個神奇...
db取值在laravel有一個非常簡單的方法
在model資料夾裡開一個class,class的名稱是 Menu,就會對應到DB裡的 menus表,會把classname先轉小寫,再加一個s去對,所以你那個class就可以參考到menus的表了,也就是你db表一定要有個s在最後面才能用這招。class的寫法也很簡單 除了檔名跟class名要相同之外。
※但假如你用news(新聞)當model的話,這時候,就不能這麼幹了。因為他轉出來的表名稱會叫做news...不會叫newss
<?php
class Menu extends Eloquent {}
?>寫一句這個就行了

※laravel的流程通常是 routes->controllers->view

step1:如上所說,在model資料夾裡建一支Menu.php模型
<?php
class Menu extends Eloquent {}
?>


step2:在routes.php裡加上一行
Route::get('menu', 'HomeController@myMenu');

這的意思是用HomeController.php裡的myMenu這個function做事
沒有這支Controller就建一支(預設範本就有)

step3:開始寫public function myMenu()的code

到此為止,你已經可以使用Menu 這個class了,而你只是把他加入model的資料夾裡並且繼承了Eloquent
那你可以做什麼?
$menus = Menu::all();  //把db裡所有的資料倒出來!
View::make('menu', compact('menus'));//傳給menu的view,資料是menus(為什麼這裡是字串格式)

接著你在menu.php(這支放在view資料夾下)就可以直接參考到$menus這個變數了!!你可以簡單的用print_r把他們列出來。

那 怎麼做分頁顯示呢?
在api(http://laravel.com/api/4.2/)有一個叫paginate的方法,
你可以這樣用
$_menu=new Menu();
$menus=$_menu->paginate(2);//要怎麼預處理這個資料,order什麼的可以在分頁前做
View::make('menu', compact('menus'));
這樣就完成了
你會看到在頁面上,只會出現2筆資料,加上?page=2,就會出現第二頁的資料
<?php
foreach ($menus as $key => $value) {
echo $value['name']."</br>";
}
?>
{{ $menus->links() }}
在下面加上{{ $menus->links() }},還會出現頁次選單...(真的是很無微不至的laravel啊!)

沒有留言:

張貼留言