[Laravel 學習筆記] 將 Model、Controller 和 Views 串連教學
本系列 Laravel 教學筆記將參酌 Laravel 4 From Scratch、Laravel 5 From Scratch、Laravel 官網和 Laravel 中文官網 相關資訊進行撰寫(以 Laravel 4 From Scratch 為主)。本篇將記錄串連資料庫,將 Model、Controller 和 Views 連結起來。現代化網頁應用程式開發架構一般都使用 MVC 模式進行開發,當然 Laravel 也不例外。 之前幾篇教學文章我們已經簡單介紹了 Views 和 Controller 的用法,這篇文章我們將要說明如何將 Model、Controller 和 Views 連結起來。
一般我們使用資料庫的第一步就是建資料庫和資料表,在 Laravel 我們則是在 config 中的 database.php 設定好後建立 migration(可以想成是資料庫的Git 版本控管系統)。
範例使用 sqlite ,所以必須將 database.php 中 default 改為 sqlite,完成後下此指令產生 migration,並生成 blogs table
php artisan migrate:make create_users_table --create="blogs"
若要放棄這次操作則輸入:
php artisan migrate:rollback create_users_table
當產生 migration 後會在 database/migrations 下產生一個檔案
2014_10_23_043453_create_blog_table.php
此時我們將在建立上述檔案中建立資料庫的 Schema:
<?php
use Illuminate\Database\Migrations\Migration;
class CreateBlogTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up() {
//
Schema::create('blogs', function ($table) {
$table->increments('id');
$table->string('title');
$table->text('content')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down() {
//
Schema::drop('blogs');
}
}
完成後可以移動到 Homestead 資料夾打開虛擬機(vagrant up),並用 vagrant ssh 連結到虛擬機,然後在 Laravel 專案資料夾下輸入 php artisan tinker,進到對話指令列進行資料庫的操作,以下先插入一筆資料:
> DB::table('blogs')->insert(['title' => 'facebook is awesome!', 'content' => 'Mark can speck Chinese!', 'created_at' => new DateTime, 'updated_at' => new DateTime]);
查詢已插入的資料:
> DB::table('blogs')->get();
// array(
// 0 => object(stdClass)(
// 'id' => '1',
// 'title' => 'facebook is awesome!',
// 'content' => 'Mark can speck Chinese!',
// 'created_at' => '2014-10-23 06:16:11',
// 'updated_at' => '2014-10-23 06:16:11'
// )
// )
回傳 array of object
// routes.php
Route::get('/blog/{id}', 'MainController@showBlog'); Route::get('/blog', 'MainController@show');
// MainController.php
public function show() {
$blogs = DB::table('blogs')->get();
return View::make('blog.index', compact('blogs'));
}
public function showBlog($id) {
$blog = DB::table('blogs')->find($id);
return View::make('blog.blog', compact('blog'));
}
// index.blade.php
@extends('layout.header')
@section('content')
@foreach($blogs as $key => $blog)
<h3><a href="blog/{{$blog->id}}">{{$blog->title}}</a></h3>
@endforeach
@stop
@extends('layout.footer')
// blog.blade.php
@extends('layout.header')
@section('content')
<h1>{{$blog->title}}</h1>
<p>{{$blog->content}}</p>
@stop
@extends('layout.footer')
*基本資料庫操作:
1. 查詢操作
$results = DB::select('select * from member where id = ?', array(1)); 注意:方法 select 總是回傳陣列值
2. 新增操作
DB::insert('insert into member (id, name) values (?, ?)', array(1, 'KD'));
3. 修改操作
DB::update('update users set user_age = 100 where name = ?', array('KD'));
4. 刪除操作 DB::delete('delete from member');
如果想使用圖形化介面去操作資料庫可以考慮使用:
1. sequel pro
2. phpMyAdmin
3. navicat
按:常用 dd() => die(var_dunp())
參考文件:
1. Laravel 中文官網
2. Laravel 官網
3. Laravel 4 From Scratch
4. Laravel 5 From Scratch