Laravel 模型

Laravel学院文档

获取模型

get ,all 都可以获取到模型 all 是直接获取所有,get 是在添加了许多约束之后获取模型,get前面如果不加约束条件的话,效果与all等同

	App\User::all();
	App\User::get();
	App\User::where('id','>',5)->get();

结果集

$users = User::get();

get 方法返回包含结果集的 Illuminate\Support\Collection,其中每一个结果都是 PHP 的 StdClass 对象实例:
在这里插入图片描述

你可以像访问对象的属性一样访问字段的值:

foreach ($users as $user) {
    echo $user->name;
}
获取一行或者一列数据
  • 如果我们只想获取到一行数据,可以使用first方法
 $user = User::where('name','marun')->first();
  • 获取一列,可以使用value方法,该方法直接返回符合条件的第一列的数据
$user = User::where('name','marun')->value('password');

在这里插入图片描述

  • pluck 获取符合条件的所有列的数据
$user = User::where('name','marun')->pluck('password');

在这里插入图片描述

  • 还可以在返回数组中为列值指定自定义键(该自定义键必须是该表的其它字段列名,否则会报错)这个也只会查第一条数据啊…:
$user = User::pluck('password','name');

块级结果集
如果你需要处理成千上百条数据库记录,可以考虑使用 chunk 方法,该方法一次获取结果集的一小块,然后传递每一小块数据到闭包函数进行处理,该方法在编写处理大量数据库记录的 Artisan 命令的时候非常有用。例如,我们可以将处理全部 users 表数据分割成一次处理 100 条记录的小组块:

 User::orderBy('id')->chunk(2,function ($users){
            dump($users);
        });

在这里插入图片描述
你可以通过从闭包函数中返回 false 来终止组块的运行:

 User::orderBy('id')->chunk(2,function ($users){
        if($users[0]->name == 'Marun'){
            dump($users[0]);
            return false;
        }
 });
聚合函数

查询构建器还提供了多个聚合方法,如count, max, min, avgsum,你可以在构造查询之后调用这些方法:

$count = User::get()->count();
$count = User::get()->max('id');
$count = User::get()->min('id');
$count = User::get()->avg('id');
$count = User::get()->sum('id');

聚合函数前面也可以增加约束条件

查询(Select)

select方法,返回指定的字段

$users = User::select('name','password')->get()->toArray();

distinct方法,强制返回不重复的数据集合

$users = User::select('name')->distinct()->get()->toArray();

如果你已经有了一个查询构建器实例并且希望添加一个查询列到已存在的 select 子句,可以使用 addSelect 方法:

 $query = User::select('name');
 $users = $query->addSelect('password')->get();

原生表达式

使用DB::raw 但要注意SQL注入

$users = User::select(DB::raw('count(*) as user_count , name '))
                ->where('id', '<>', 1)
                ->groupBy('name')
                ->get();
        		dump($users);
原生方法

selectRaw
selectRaw等同于 select(DB::raw(....)),该方法接收一个可选的绑定数组来作为第二个参数

        $users = User::selectRaw('name')
                ->get();
                

whereRaw / orWhereRaw

whereRaw 和 orWhereRaw 方法可用于注入原生 where 子句到查询,这两个方法接收一个可选的绑定数组作为第二个参数:

$users = User::whereRaw('price > IF( name= "marun", 100, ?)', [50])
            ->get()->toArray();

havingRaw / orHavingRaw

havingRaw 和 orHavingRaw 方法可用于设置原生字符串作为 having 子句的值:

这里我报错了 , SQLSTATE[42000]: Syntax error or access violation: 1055
解决办法 :
在Laravel的config\database.php中 mysql的一个设置 把strict 默认值改成 false

$orders = User::groupBy('name')
                ->havingRaw('price > 300')
                ->get();

orderByRaw

orderByRaw 方法可用于设置原生字符串作为 order by 子句的值:

$orders = User::orderByRaw('updated_at - created_at DESC')
                ->get();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值