iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 15
1
Modern Web

PHP laravel的邂逅系列 第 15

DAY15-laravel sql query介紹 PART 2

DAY15-laravel sql query介紹 PART 2

今天來講講更新和刪除,還有model要怎麼讀取資料。

在router裡面新增一個更新url,

Route::get('/update',function(){
    $updated = DB::update('update news set title = "更新最新消息" where id = ?',[1]);
    return $updated;
});


更新完後再去資料庫看看,title已經變了,那就代表成功囉

在router裡面新增一個更新url,

Route::get('/delete',function(){
    $deleted = DB::delete('delete from news where id = ?',[1]);
    return $deleted;
});


執行完以後,資料確實被刪了

現在來新增一個news的model,來讓model變成我們的中介,不用再寫原生的sql語法,現在介紹的語法會比原生好理解的多,但是sql還是很重要的,如果是初學的話,還是建議要都搞懂,再來使用ORM會比較能夠理解為什麼是這樣做的。

先在終端機中打上下面的語法,接著就可以在專案的app目錄底下去找到news.php的檔案,開起來看看裡面長怎樣

//一般建議model名稱會是單數,開頭是大寫會比較好
php artisan make:model News

model很厲害,預設會去抓你名稱的複數為資料表,那如果我們用了覆數的名稱怎麼辦呢?可以打下面的程式碼指定特定的資料表,下面的語法會去抓到news的資料表。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    protected $table = 'news';
}

接著到route的檔案中,在上面要先引入News的model才能使用,News::all()的意思,會撈到news裡面所有的資料,因為是all,那就一定是陣列,再使用foreach來把每一筆的title印出來。

use App\News;

Route::get('/read',function(){
    $posts = News::all();
    
    foreach($posts as $post){
        return $post->title;
    };
});

剛剛是搜尋所有的資料,那現在來看看怎麼尋找特定的資料,這邊把剛剛all()改成find()裡面的參數是id的數字,這樣就可以把他回傳試試看

Route::get('/find',function(){
    $post = News::find(1);
    return $post;
});

顯示出來的畫面會像這樣,如果是使用chrome的朋友,建議可以extension可以使用json Formatter來看資料,而不會讓資料都是一大坨的文字,看起來也舒服許多。

{
"id": 1,
"title": "最新消息1",
"description": "最新消息1",
"created_at": null,
"updated_at": null
}

上一篇
DAY14-laravel sql 語法介紹
下一篇
DAY16-laravel Eloquent ORM
系列文
PHP laravel的邂逅30

尚未有邦友留言

立即登入留言