[Laravel 學習筆記] 將 Model、Controller 和 Views 串連教學

本系列 Laravel 教學筆記將參酌 Laravel 4 From ScratchLaravel 5 From ScratchLaravel  官網和 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


贊助本站 (Donate)