Laravel - Eloquent 模型查询

  1. 模型文件
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Student extends Model
{
    protected $table = 'student';
    protected $primaryKey = 'id';
}
  1. 控制器文件
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);
    }
  1. 新增函数
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();

    }
  1. 更新数据
public function ormUpdate()
    {
        # 1.通过模型更新数据
       /*  $student = Student::find(14);
        $student->name = '小卡';
        $student->save(); */

        # 2.结合查询批量更新
        $student = Student::where('id',14)
        ->where('name','小卡')
        ->update(['name' => '老卡']);
    }
  1. 删除数据
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();
    }
  1. Laravel - blade 模板继承的使用
  2. 模板文件
<!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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值