路由器的使用:
//在瀏覽器直接訪問,跳轉到welcome視圖,視圖路徑在public/resources/views/
Route::get('/', function () {
return view('welcome');
});
//在瀏覽器直接訪問,返回hello world
Route::get("route1", function () {
return "hello world";
});
//因為是post請求,不可以在瀏覽器地址欄直接訪問
Route::post("route2", function () {
return "hello world";
});
//match: 可以定義接收get或post請求
Route::match(['get','post'], "reute3", function () {
return "hello world";
});
//any: 可以接收get和post請求
Route::any("route4", function () {
return "hello world";
});
//路由接收參數,php中的字符串拼接用 "."
Route::get("user1/{id}", function($id){
return "id-->" . $id;
});
//在user2/{id?} 后面加個問號代表參數不是必要的,可以在function中給個默認值
Route::get("user2/{id?}", function($id = 5){
return "id-->" . $id;
});
//參數校驗,在最后面加上正折表達,這里代表username只能是字母
Route::get("user3/{username}", function($username) {
return "username-->" . $username;
})->where("username","[A-Za-z]+");
//路由別名,只要在后面加個數組,注意數組第一個元素是"as" => "center" ,第二個元素是function
Route::get("user4/mamber-center", ["as" => "center" , function(){
//使用routes可以返回對應的路徑
return route("center");
}]);
//路由群組,加前綴,member.可以通過member/user1訪問到第一個,
//通過member/user2訪問到第二個
Route::group(["prefix" => "member"], function(){
Route::get("user1",function(){
return "hello world";
});
Route::get("user2",["as" => "group_route", function(){
return route("group_route");
}]);
});
路由器綁定控制器的方法:
//路由和控制器進行綁定,第一個是訪問地址,第二個是控制器名稱和方法名稱,用@符號隔開
Route::get("member", "MemberController@info");
//路由和控制器進行綁定,第二種方法
Route::get("member1", ["uses" => "MemberController@info"]);
//起別名的方法
Route::get("member2", ["uses" => "MemberController@info", "as" => "memter"]);
//控制器接收參數的方法
Route::get("member3/{id}","MemberController@info")->where("id", "[0-9]+");
創建控制器:
<?php
namespace App\Http\Controllers;
//在app/http/controllers/下新建一個文件,類名和文件名相同,然后要extends controller
class MemberController extends Controller{
public function info($id){
return "id->" . $id;
}
}
創建視圖,一般一個控制器對應一個視圖文件夾:
.blade.php是默認模板視圖文件
在控制器中返回視圖代碼:
class MemberController extends Controller{
public function info(){
//返回/member/info.blade.php
return view("/member/info");
}
}
在視圖里面獲取控制器傳過來的參數:
視圖文件:使用{{$name}} 雙大括號加參數名
{{$name}} === {{$age}}
控制器文件:在返回視圖后加一個數組,里面存放參數
public function info(){
//返回/member/info.blade.php
return view("/member/info",
["name" => "php", "age" => 123]);
}
Model視圖的創建:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
//創建一個視圖類,extends Model
class Member extends Model{
//為了方法調用,寫成靜態方法
public static function info(){
return "this is model";
}
}
控制器調用視圖:
public function info(){
return Member::info();
}
連接數據庫:
config/database.php --》mysql的配置
.env --》根目錄下的配置文件,里面存放連接要用的數據
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=shopping
DB_USERNAME=root
DB_PASSWORD=
根據要連接的數據庫配置一下就可以了
在Conrtoller中連接數據庫寫sql語句
用DB::select,DB::update,DB::insert,DB::delete,
public function getUserInfo($username){
$user = DB::select("select id,username from user where username=?",
[$username]); //中括號放參數,增刪改查寫法類似
return dd($user);
}
查詢構造器的使用(更快更方便):
插入:
//查詢構造器的使用,在user表中插入數據,可以用二維數組插入多條數據
public function query(){
$rowCount = DB::table("user")->insert(
[
["username" => "larvel2", "password" => "admin"],
["username" => "larvel3", "password" => "admin"]
]);
if($rowCount > 0){
return "success";
}
return fail;
}
修改:
//查詢構造器的使用,在user表中修改數據,注意要加上where條件
public function query2(){
$rowCount = DB::table("user")
->where("username","root")
->update(["password" => "456"]);
var_dump($rowCount);
if($rowCount > 0){
return "success";
}
return "fail";
}
刪除:
//使用查詢構造器刪除數據
public function query3(){
$rowCount = DB::table("user")
->where("id", ">=" ,13)
->delete();
var_dump($rowCount);
if($rowCount > 0){
return "success";
}
return "fail";
}
查詢:
//使用查詢構造器查詢數據
public function query4(){
//查詢所有數據
$userList = DB::table("user")->get();
//查詢第一條數據,可以指定排序方法->order("id","desc")
$user1 = DB::table("user")->first();
//查詢指定條件的數據
$user2 = DB::table("user")->where("id", ">=" ,14)->get();
//查詢指定條件的數據,多條件版
$user3 = DB::table("user")->whereRaw("id >= ?", [12])->get();
//查詢指定的字段
$usernameList = DB::table("user")->pluck("username");
//查詢之后用鍵值對的方式顯示
$usernameAndId = DB::table("user")->lists("username","id");
//查詢指定的字段
$selectUser = DB::table("user")->select("username","password")->get();
//一次查詢n條,可以用return停止查詢
echo "<pre>";
$selectN = DB::table("user")->chunk(2,function($user){
var_dump($user);
});
}
使用mysql的函數:
//聚合函數的使用
public function query5(){
$count = DB::table("user")->count();
var_dump($count);
$max = DB::table("user")->max("id");
var_dump($max);
}
ORM框架:
查找:
public function orm1(){
echo "<pre>";
//User定義的一個pojo,他有all(),find(),findOrFail()等方法
$users = User::all();
$user1 = User::findOrFail(15);//查找指定id,如果查不到就報錯
$user2 = User::where("id",">",1)->orderBy("id","desc")->first();
$count = User::count(); //聚合函數的使用
$max = User::max("id");
dd($max);
}
插入:
public function orm2(){
$user = new User(); //新建一個用戶
$user->username = "orm"; //設置用戶屬性
$user->password = "admin";
//直接用save()方法保護到數據庫,
//orms框架會自動處理creaet_at和update_at
//如果數據庫表沒有這兩個字段,會報錯
$bool = $user->save();
//用create方法直接保護到數據庫
$user1 = User::create(["username" => "imooc", "password" => "admin"]);
//在數據庫查找,如果找不到就插入一條新的
$user2 = User::firstOrCreate(["username" => "cai", "password" => "admin"]);
//在數據庫查找,如果找不到就new一個對象,不會插入數據庫
$user3 = User::firstOrNew(["username" => "caijun", "password" => "admin"]);
$user3->save();
dd($user3);
}
修改:
//orm,修改
public function orm3(){
//把id大於40的密碼修改為123456
$rowCount = User::where("id", ">", 40)->update(["password" => "123456"]);
var_dump($rowCount);
}
刪除:
//orm,刪除
public function orm4(){
//通過模型刪除
$user1 = User::find(41);
$user1->delete();
//通過主鍵刪除
User::destroy(42);
User::destroy([43,44]);
//指定條件刪除
User::where("id", ">", "15")->delete();
}
Blade模板的使用:
在resources中創建一個模板文件:layous.blade.php
<html>
<title></title>
<style type="text/css">
div{
margin: 5px;
border-style: solid;
border-color: black;
float: left;
}
.header{
width: 100%;
height: 200px;
}
.sidebar{
width: 200px;
height: 500px;
}
.content{
width: 600px;
height: 500px;
}
</style>
<body>
<div class = "header">
@section("header")
header
@show
</div>
<div class = "sidebar">
@yield("sidebar")
sidebar
@show
</div>
<div class = "content">
@section("content")
content
@show
</div>
</body>
</html>
創建一個section.blade.php文件,引用模板
@extends("layous")
@section("header")
@parent
section 1 => header
@stop
@section("sidebar")
@parent
section 1 => sidebar
@stop
@section("content")
@parent
section 1 => content
@stop
模板文件的使用:
@section("content")
<!-- 1.輸出變量 -->
<p>{{$username}}</p>
<!-- 2.調用函數 -->
<p>{{ time() }}</p>
<p>{{ date("Y-m-d H:i:m"),time() }}</p>
<!-- 3.是否在數組中 -->
<p>{{ in_array($username,$arr) ? "true" : "false"}}</p>
<p>{{var_dump($arr)}}</p>
<!-- 4.原樣輸出 -->
<p>@{{$username}}</p>
{{-- 址注釋在瀏覽器中看不到 --}}
<!-- 5.使用子視圖 ,可以傳參數到子視圖中 -->
<p>@include("user/childView",["message" => "success"])</p>
@stop
模板中流程控制:
@section("sidebar")
@if($username == "immoc")
<p>i am immoc</p>
@else
<p>i am not immoc</p>
@endif
@for($i = 0; $i < 9; $i ++)
<p>{{$i}}</p>
@endfor
@foreach($users as $user)
<p>{{$user->username}}</p>
@endforeach
@forelse($users as $user)
<p>{{$user->usrname}}</p>
@empty
<p>null</p>
@endforelse
@stop
模板中的URL:url()和route()比較常用
@section("header")
@parent
section 1 => header
<a href="{{url('urlTest')}}">url()</a>
<a href="{{action('UserController@urlTest')}}">action()</a>;
<a href="{{route('url')}}">route()</a>
@stop