- 模型文件
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Student extends Model
{
protected $table = 'student';
protected $primaryKey = 'id';
}
- 控制器文件
public function ormQuery()
{
# 1.1 查询所有
// $ret = Student::all();
# 1.2 查询主键,没找到返回null
// $ret = Student::find(1);
# 1.3 根据主键查找,如果没查到就抛出异常
// $ret = Student::findOrFail(1);
# ______________________________________________________________________
# 2.Eloquent 的 all 方法会返回在模型数据表中的所有结果。由于每个 Eloquent 模型都可以当作一个 查询构造器,所以你可以在查找中增加规则,然后使用 get 方法来获取结果:
# 2.1 和 all()一样都是返回所有数据
// $ret = Student::get();
# 2.2 获取id为1的数据
// $ret = Student::where('id',1)->get();
# 2.3 获取id>1 的数据 按照年龄进行降序排列
// $ret = Student::where('id','>',1)->orderBy('age','desc')->get();
# 2.4 获取id>1 的数据 按照年龄进行降序排列 的 第一个
// $ret = Student::where('id','>',1)->orderBy('age','desc')->first();
# ______________________________________________________________________
# 3. chunk 分块结果 . 如果你需要处理上千笔 Eloquent 查找结果,则可以使用 chunk 命令。chunk 方法将会获取一个 Eloquent 模型的「分块」,并将它们送到指定的 闭包 (Closure) 中进行处理。当你在处理大量结果时,使用 chunk 方法可节省内存:
/**
* @param 1 : 第一个参数表示每次「分块」时你希望接收的数据数量
* @param 2 : 闭包则作为第二个参数传递,它将会在每次从数据取出分块时被调用。
*/
// Student::chunk(2,function($req){
// dump($req);
// });
# ______________________________________________________________________
# 4.聚合函数
# 4.1 查询总数
// $ret = Student::count();
# 4.2 比较得出最大值而非计算
// $ret = Student::max('age');
$ret = Student::where('id','>',1)->max('age');
dump($ret);
}
- 新增函数
public function ormCreate()
{
# 1. 使用模型新增 ->save()
/*
$student = new Student();
$student->name = '大圣';
$student->age = 500;
$student->sex = '猴';
$student->save();
*/
# 2. 使用模型的Create方法新增数据
## 2.1 报错,因为不允许批量赋值,需要在模型文件内 设置可以被批量赋值的属性 protected $fillable = ['name']; 。如果只设置name则只存name.
## protected $fillable = ['name','age','sex']; 设置要存储的属性
/*
Student::create([
'name'=>'牛魔王','age'=>'600','sex'=>'牛'
]);
*/
# 3. firstOrCreate 用属性匹配内容,当结果不存在时自动创建并保存
// Student::firstOrCreate(['name'=>'武卡卡']);
# 4. firstOrNew 用属性匹配内容,当结果不存在时实例化一个新实例 ,需要手动报错
Student::firstOrNew(['name'=>'武卡卡22222'])->save();
$banner = Banner::firstOrNew([
'title' => $request->title,
'introduce' => $request->introduce,
'img' => $fileName
])->save();
}
- 更新数据
public function ormUpdate()
{
# 1.通过模型更新数据
/* $student = Student::find(14);
$student->name = '小卡';
$student->save(); */
# 2.结合查询批量更新
$student = Student::where('id',14)
->where('name','小卡')
->update(['name' => '老卡']);
}
- 删除数据
public function ormDelete()
{
# 1.通过模型删除
// $student = Student::where('id',5);
// $student->delete();
# 2.通过主键值删除
## 2.1 删除单个
// Student::destroy(14);
## 2.4 删除多个
// Student::destroy(11,13);
// Student::destroy([1,4]);
# 3.根据指定条件删除
Student::where('id',3)->delete();
}
- Laravel - blade 模板继承的使用
- 模板文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@yield('title')</title>
<style>
.header{
width:100%;
min-height:100px;
background:gold;
}
.main{
width:100%;
min-height:400px;
}
.main .sidebar{
width:30%;
height:400px;
float:left;
background:yellow;
}
.main .content{
width:70%;
height:400px;
float:left;
background:green;
}
.footer{
clear:both;
width:100%;
min-height:100px;
background:blue;
}
</style>
</head>
<body>
<div class="header">
@section('header')
头部.
section可以定义视图变量,也可以在内部进行拓展.(命令定义一个内容区块)
yield 只是声明定义,不可拓展. ( “显示指定区块” 的内容。)
@show
</div>
<div class="main">
<div class="sidebar">
@section('sidebar')
侧边栏
@show
</div>
<div class="content">
@yield('content','主要内容区域')
</div>
</div>
<div class="footer">
@section('footer')
底部
@show
</div>
</body>
</html>
2. 要继承的文件
@extends('layout')
<!-- 重写头部 -->
@section('header')
<!-- 继承之前的 -->
@parent
<h1>重写头部</h1>
@stop
<!-- 使用 yield. 先定义section -->
@section('content')
content12
@stop
@section('title')
一拳超人
@stop