成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Laravel 5.4 入門系列 3. 任務(wù)列表顯示

SunZhaopeng / 3103人閱讀

摘要:熟悉了路由與視圖的基本操作之后,我們來讓視圖顯示一個(gè)任務(wù)列表吧。創(chuàng)建遷移現(xiàn)在,我們就可以創(chuàng)建一個(gè)用來生成任務(wù)表的遷移了。

熟悉了路由與視圖的基本操作之后,我們來讓視圖顯示一個(gè)任務(wù)列表吧。主要知識點(diǎn):

數(shù)據(jù)遷移

查詢構(gòu)造器

數(shù)據(jù)庫 創(chuàng)建數(shù)據(jù)庫

首先創(chuàng)建一個(gè)數(shù)據(jù)庫:

$ mysql -uroot -p
mysql> create database laratasks;
數(shù)據(jù)庫配置

Laravel 的配置文件保存在 config 目錄下面,例如 config/database.php 保存了數(shù)據(jù)庫的配置信息:

"mysql" => [
    "driver"    => "mysql",
    "host"      => env("DB_HOST", "localhost"),
    "database"  => env("DB_DATABASE", "forge"),
    "username"  => env("DB_USERNAME", "forge"),
    "password"  => env("DB_PASSWORD", ""),
    ...
],

可以看到,有幾個(gè)變量都是先通過 env 方法獲取的,取不到的時(shí)候再使用自定義的默認(rèn)值。因此通常在 .env 目錄下面根據(jù)不同的開發(fā)人員的需求來進(jìn)行配置:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laratasks
DB_USERNAME=root
DB_PASSWORD=
執(zhí)行遷移

配置完數(shù)據(jù)庫之后,自然想到的是如何創(chuàng)建和操作表?Laravel 是通過遷移來實(shí)現(xiàn)對表的各項(xiàng)操作的。而 Laravel 默認(rèn)就自帶了兩個(gè)遷移。我們可以通過執(zhí)行遷移來判斷數(shù)據(jù)庫是否連上:

$ php artisan migrate

如果對該命令不熟悉,可以使用如下命令查看具體說明:

$ php artisan help migrate

如果使用的 MySQL 版本低于 5.7,可能會報(bào)錯(cuò):

Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

這是因?yàn)?,Laravel 5.4 采用的數(shù)據(jù)庫編碼為 utf8mb4,該編碼可以支持 emojis 表情的保存。要解決該問題,只需要增加下面的代碼:

// /app/Providers/AppServiceProvider.php
use IlluminateSupportFacadesSchema;

public function boot()
{
    Schema::defaultStringLength(191);
}

解決了該問題之后,我們需要手動先刪除數(shù)據(jù)庫中的表再重新執(zhí)行遷移:

$ php artisan migrate

若遷移執(zhí)行成功,數(shù)據(jù)庫默認(rèn)會創(chuàng)建三張表:

mysql> use laratasks;
Database changed
mysql> show tables;
+---------------------+
| Tables_in_laratasks |
+---------------------+
| migrations          |
| password_resets     |
| users               |
+---------------------+
3 rows in set (0.00 sec)

其中 migrations 是用來記錄遷移信息的,其余兩張則是自帶的兩個(gè)遷移任務(wù)生成的表。

創(chuàng)建遷移

現(xiàn)在,我們就可以創(chuàng)建一個(gè)用來生成任務(wù)表的遷移了。首先是創(chuàng)建遷移:

$ php artisan make:migration create_tasks_table --create=tasks
Created Migration: 2017_04_10_175246_create_tasks_table

--create=tasks 代表了要創(chuàng)建數(shù)據(jù)表 tasks,這樣遷移文件會預(yù)先定義好一些內(nèi)容。打開遷移表,添加幾個(gè)字段:

// /database/migrations/日期_create_tasks_table.php
 public function up()
    {
        Schema::create("tasks", function (Blueprint $table) {
            $table->increments("id");
            $table->text("name");
            $table->timestamps();
        });
    }

當(dāng)我們執(zhí)行遷移時(shí),就會調(diào)用 up 方法,我們來執(zhí)行下剛才創(chuàng)建的遷移:

$ php artisan migrate
Migrating: 2017_04_10_175246_create_tasks_table
Migrated:  2017_04_10_175246_create_tasks_table
查詢構(gòu)造器(DB)

現(xiàn)在,數(shù)據(jù)庫就多了 tasks 表格了,我們通過 tinker 來添加數(shù)據(jù)吧:

$ php artisan tinker
Psy Shell v0.8.3 (PHP 5.6.22 — cli) by Justin Hileman

首先,使用 DB 插入幾條數(shù)據(jù):

>>>> DB::insert("insert into  tasks (id, name, created_at, updated_at) values (?, ?,?,?)", [1, "作業(yè)",CarbonCarbon::now(),CarbonCarbon::now()]);
>>> DB::insert("insert into  tasks (id, name, created_at, updated_at) values (?, ?,?,?)", [2, "購物",CarbonCarbon::now(),CarbonCarbon::now()]);
>>> DB::insert("insert into  tasks (id, name, created_at, updated_at) values (?, ?,?,?)", [3, "運(yùn)動",CarbonCarbon::now(),CarbonCarbon::now()]);

再練習(xí)下 DB 的其他功能:

>>> DB::table("tasks")->get();   # 獲取所有表數(shù)據(jù)
>>> DB::table("tasks")->get()->toArray();  # 將獲取的數(shù)據(jù)轉(zhuǎn)化為數(shù)據(jù)
>>> DB::table("tasks")->first();  # 獲取第一條數(shù)據(jù)
>>> DB::table("tasks")->where("name","購物")->first(); # 指定條件
>>> DB::table("tasks")->pluck("name"); # 獲取姓名列表
顯示任務(wù)列表

接下來,我們就可以讓網(wǎng)站顯示任務(wù)列表了,例如:

Route::get("tasks", function() {
    return $tasks = DB::table("tasks")->latest()->get();
});

訪問網(wǎng)站的 /tasks 路徑,就可以看到返回了任務(wù)列表的 json 形式。不過我們還是用視圖展現(xiàn)吧:

// /routes/web.php
Route::get("tasks", function() {
    $tasks = DB::table("tasks")->latest()->get();
    return view("tasks.index",compact("tasks"));
});

tasks.index 其實(shí)就相當(dāng)于 tasks/index,接下來創(chuàng)建視圖:

// /resources/views/tasks/index.blade.php




    
    Document


    {{ $tasks }}

訪問 /tasks,直接返回了一堆任務(wù)列表,界面顯示很不友好,我們可以用 PHP 的 foreach 循環(huán)來友好的顯示任務(wù)列表:

// /resources/views/tasks/index.blade.php

任務(wù)列表

  • name ?>

同樣,Laravel 的 Blade 模板提供了更為簡潔的語法:

// /resources/views/tasks/index.blade.php

任務(wù)列表

    @foreach ($tasks as $task)
  • {{ $task->name }}
  • @endforeach
顯示具體任務(wù)

接下來是顯示具體的某個(gè)任務(wù)。首先是路由:

// /routes/web.php
Route::get("tasks/{task}", function($id) {
    $task = DB::table("tasks")->find($id);
    return view("tasks/show",compact("task"));
});

{task} 相當(dāng)于占位符,比如用戶訪問 tasks/1,函數(shù)接收的 $id 就為 1。

// /resources/views/tasks/show.blade.php



    
    Document


    {{ $task->name }}

最后,我們創(chuàng)建超鏈接讓任務(wù)列表可跳轉(zhuǎn)到具體任務(wù)吧:

任務(wù)列表

超鏈接我們也可以通過 url 函數(shù)生成:

id]) }}">{{ $task->name }}

參考資料:

Laravel 5.4: Specified key was too long error - Laravel News

Laravel 數(shù)據(jù)庫之:數(shù)據(jù)庫請求構(gòu)建器 | Laravel 5.4 中文文檔

PHP: 流程控制的替代語法 - Manual

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/22708.html

相關(guān)文章

  • Laravel 5.4 入門系列 4. 任務(wù)列表顯示(2)

    摘要:同時(shí),傳入?yún)?shù),即已存在的查詢。因此,更為常見的做法是在控制器中處理路由請求。 這一節(jié),我們進(jìn)一步完善上一節(jié)創(chuàng)建的任務(wù)列表。主要知識點(diǎn): Eloquent Model 控制器 路由模型綁定 Eloquent Model 新增遷移 首先,我們?yōu)閿?shù)據(jù)庫表 tasks 新增一個(gè)字段 completed,用來表示任務(wù)是否完成: $ php artisan make:migration ad...

    banana_pi 評論0 收藏0
  • Laravel 5.4 入門系列 7. 文章的顯示

    摘要:為的輔助方法,用于截取字符串的前個(gè)字符,然后返回前個(gè)字符加的格式。顯示某篇文章顯示某篇文章的比較簡單,路由注意要放在下面,假如這樣那么,我們訪問的時(shí)候,會被當(dāng)成是的查詢參數(shù)。 文章的顯示功能比較簡單,分為兩部分: 文章列表 具體的某篇文章 顯示文章列表 路由之前已經(jīng)定義好: Route::get(/posts,PostsController@index); 控制器: public ...

    kuangcaibao 評論0 收藏0
  • Laravel 5.4 入門系列 5. 博客通用布局

    摘要:接下來執(zhí)行遷移即可通用布局通用布局首先是博客首頁,定義路由控制器視圖博客首頁訪問下網(wǎng)站根目錄,顯示博客首頁,框架基本搭建完成了。首先是通用布局通用布局里面除了使用之外,還使用了,用于加載其他模板。 5. 博客的通用布局 初始化 創(chuàng)建控制器、模型、遷移 博客的核心是文章,可以先來實(shí)現(xiàn)和文章有關(guān)的功能,根據(jù)前幾節(jié)的介紹可知,我們至少需要創(chuàng)建這幾類: PostsController:控制器...

    xuweijian 評論0 收藏0
  • Laravel 5.4 入門系列 9. 注冊與登錄,用戶關(guān)聯(lián)

    摘要:本節(jié)將實(shí)現(xiàn)文章評論與用戶關(guān)聯(lián)的功能。關(guān)系定義首先修改與表,增加字段增加全部回滾并重新執(zhí)行遷移添加用戶表與文章表評論表的一對多關(guān)系添加文章評論表與用戶表的多對一關(guān)系同時(shí),評論表的字段增加。同時(shí),我們還自定義了返回的錯(cuò)誤信息。 本節(jié)將實(shí)現(xiàn)文章、評論與用戶關(guān)聯(lián)的功能。 關(guān)系定義 首先修改 posts 與 comments 表,增加 user_id 字段 /database/migratio...

    smallStone 評論0 收藏0
  • Laravel 5.4 入門系列 13. 終篇: 小白也能看懂的 Laravel 核心概念講解

    摘要:但是服務(wù)通常由服務(wù)提供者來管理的。小結(jié)通過上述的例子,基本上可以理解服務(wù)容器和服務(wù)提供者的使用。懂得了服務(wù)容器和服務(wù)提供者,理解門面也就不難了。 自動依賴注入 什么是依賴注入,用大白話將通過類型提示的方式向函數(shù)傳遞參數(shù)。 實(shí)例 1 首先,定義一個(gè)類: /routes/web.php class Bar {} 假如我們在其他地方要使用到 Bar 提供的功能(服務(wù)),怎么辦,直接傳入?yún)?shù)即...

    BenCHou 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<