laravel 学习之第一章

第一篇

模型

怎样新建模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Member extends Model
{
    public static function getName()
    {
        return 'this is my name';
    }
}

怎样使用模型

use App\Member;
echo Member::getName();

第二篇

laravel 提供三种操作数据库方式:DB facade(原始查找),查询构造器,Eloquent ORM。

facade : 正面。

Eloquent:雄辩。

DB facade

新建数据库与连接数据库

// .env 文件
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=root

// config/database.php 找到 mysql
'prefix' => '',   //前缀

使用 DB facade 实现 CURD

$flag = DB::insert('insert into student(name, age) values(?,?)'
     , ["helen", 16]
);
var_dump($flag);
/**
bool(true)
**/
$aStudent = DB::select('select * from student');
var_dump($aStudent);
/**
array(1) {
  [0]=>
  object(stdClass)#126 (3) {
    ["id"]=>
    int(1)
    ["name"]=>
    string(5) "helen"
    ["age"]=>
    int(16)
  }
}
可以通过 dd 来人性化输出
**/
$num = DB::update('update student set age = ? where name = ?'
    , [34, 'helen']
);
var_dump($num);
// int(10)  返回修改行数
$num = DB::delete('delete from student where id > ?', [1]);
var_dump($num);
// int(10)  返回修改行数

查询构造器

新增数据

$bool = DB::table('student')->insert(['name' => 'michael', 'age' => 1]);
var_dump($bool);
$id = DB::table('student')->insertGetId(['name' => 'leon', 'age' => 1]);
var_dump($id);
$bool = DB::table('student')->insert([
    ['name' => 'leon', 'age' => 1],
    ['name' => 'michael', 'age' => 1],
]);
var_dump($bool);

修改数据

  1. 更新指定内容
$num = DB::table('student')->where('id', 12)->update(['age' => 11]);
// where 里面可以是关联数组,也可以是两个参数。 
// update 里面必须是数组
  1. 自增和自减
$num = DB::table('student')->increment('age');
$num = DB::table('student')->increment('age', 3);
$num = DB::table('student')->decrement('age');
$num = DB::table('student')->where('id', '>=', 12)->increment('age', 5, ['name' => 'Bob']);
// 先用 where !!如果先用 increment 会返回整数,无法链式操作

删除数据

  1. delete
$num = DB::table('student')->where(['id' => 23])->delete();
$num = DB::table('student')->delete();
  1. truncate
DB::table('student')->truncate(); // 什么都不返回

查询数据

get

$student = DB::table('student')->get();        // 获取所有

first

$student = DB::table('student')->orderBy('id', 'desc')->first();

where

$student = DB::table('student')->where('id', '>=', '11')->get();
$student = DB::table('student')
    ->whereRaw('id >= ? and age = ?', [12, 22])->get();

pluck:采、摘

$student = DB::table('student')->pluck('name');

select

$student = DB::table('student')->select('id', 'name')->get();

chunk:大块的

DB::table('student')->orderBy('id')->chunk(3, function($student){
    var_dump($student);
});

聚合函数

count

$count = DB::table('student')->count();

max

$max = DB::table('student')->max('age');

min

$min = DB::table('student')->min('age');

avg

$avg = DB::table('student')->avg('age');

sum

$sum = DB::table('student')->sum('age');

Eloquent ORM

简介、模型建立、查询数据

<?php
namespace App;
use ...;
class Student extends Model {
    protected $table = 'student';  // 默认是 students
    protected $primaryKey = 'id';  // 默认是 id
}
$students = Student::all();
$student = Student::find(33);
$student = Student::findOrFail(123);    //找不到就报错
// 可以结合构造查询器里的内容一起使用,比如 chunk、count 等
$students = Student::get();
$student = Student::where('id', '>', '12')->orderBy('age', 'desc')->first();

新增数据、自定义时间戳、批量赋值

  1. 通过模型新增数据(涉及到自定义时间戳)
$object = new Student();
$object->name = 'leon';
$object->age = 12;
$flag = $object->save();    // 会在数据库中填充 created_at 和 updated_at 。
                            // 在模型中设置 public $timestamps = false; 即可关闭
// 可在模型中设置怎样更新created_at 和 updated_at 字段,如下
protected function getDateFormat() {
    return time();
}

// 获取 created_at 和 updated_at 字段
$student = Student::find(12);
echo $student->created_at;     //输出 2017-03-22 17:11:11
// 如果想输出它本来的样子,可以这样
protected function asDateTime($val) {
    return $val;
}
  1. 使用模型 create 方法新增数据 (涉及到批量赋值)
// 首先要指定批量赋值的字段
protected $fillable = ['name', 'age'];

// 然后批量赋值
$student = Student::create(['name' => 'mm', 'age' => 12]);


// 指定不允许批量赋值的字段
protected $guarded = ['name'];
$student = Student::firstOrCreate(['name' => 'mm']);   // 没有就插入并取出,有则取出
$student = Student::firstOrNew(['name' => 'newmm']);   // 有则取出,没有就创建对象,想存数据库则save
$flag = $student->save();

修改数据

$student = Student::find(102);
$student->name = 'kitt';
$bool = $student->save();       // 此时还会更新 updated_at 的时间戳
$num = Student::where('id', '>', 101)->update(['age' => 12]);   // 会更新 updated_at 的时间戳

删除数据

  1. 通过模型删除
$student = Student::find(1022);
$bool = $student->delete();
  1. 通过条件删除
$num = Student::where('id', '>', 101)->delete(); 

第三篇

blade模版引擎

模版继承

section

yield

extends

parent

// 父模版
@section('sidebar')
sidebar html 内容
@show

@yield('content', '一些内容');
// 继承
@extends('member.layouts')

@section('sidebar')
@parent
换了内容
@stop

// yield 一样用
@section('content')
    新的内容
@stop  

基础语法

// 控制器关联模版
return view('student.show', ['name' => 'leon']);

// 输出变量和一句话php都可以像一下使用
{{ $name }}
{{ date('Y') }}
{{ isset($name) ? $name : 'default' }}  ==  {{ $name or 'default' }}

// 原样输出
@{{ $name }}

// 模版注释 (浏览器查看不到的注释)
{{-- 我是注释 --}}

// 引入子视图
@include('student.show')
// 可以传值给子视图
@include('student.show', ['msg' => 'welcome'])  

流程控制

// if
@if ($id == 'leon')
  i am leon
@elseif ($id == '111')
  sss
@else
  ddd
@endif

// unless
@unless ($name == 'michael')   // 如果 name 值是 michael 不走下面!!!
  oh
@endunless

// for
@for($i=1;$i<10;$i++)
  sss{{$i}}
@endfor

// foreach
@foreach($stus as $stu)
  {{$stu->name}}
@endforeach

// forelse  
@forelse ($users as $user)
    <li>{{ $user->name }}</li>
@empty
    <p>没有用户</p>
@endforelse

// while
@while (true)
    <p>我永远都在跑循环。</p>
@endwhile

模版中的url

Route::any('url', ['as' => 'url', 'uses'=>'StudentController@urlTest']);

// url()            通过路由名称生成url
{{url('url')}}   
// action()         通过指定控制器和方法名生成url
{{action('StudentController@urlTest')}}
// route()          通过别名生成url
{{route('url')}}    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值