首页 > 其他分享 >Laravel的ORM模型的find(),findOrFail(),first(),firstOrFail(),get(),list(),toArray()之间的区别是什么?

Laravel的ORM模型的find(),findOrFail(),first(),firstOrFail(),get(),list(),toArray()之间的区别是什么?

时间:2023-02-09 11:34:18浏览次数:46  
标签:Laravel toArray findOrFail name get getList label 返回 id


阅读目录

  • ​​get() 后连缀方式添加 getList 方法​​
  • ​​get_object_vars — 返回由对象属性组成的关联数组​​
  • ​​get() 方法后添加 getList() 方法​​
find($id)需要一个id并返回一个模型。如果不存在匹配的模型,则返回null。

findOrFail($id)需要一个id并返回一个模型。如果不存在匹配的模型,则会引发错误, 它会抛出一个error。

first()返回在数据库中找到的第一条记录。如果不存在匹配的模型,则返回null。

firstOrFail()返回在数据库中找到的第一条记录。如果不存在匹配的模型,则会引发错误。它会抛出一个error。

get() 返回与查询匹配的模型集合。

pluck($column)仅返回给定列中值的集合。在以前的Laravel版本中,调用了此方法lists。

toArray() 将模型/集合转换为简单的PHP数组。

get() 后连缀方式添加 getList 方法

先了下这个函数

get_object_vars — 返回由对象属性组成的关联数组

<?php
class Point2D
{
public $x, $y;
public $label;

function __construct($x, $y)
{
$this->x = $x;
$this->y = $y;
}

function setLabel($label)
{
$this->label = $label;
}
}

// "$label" is declared but not defined
$p1 = new Point2D(1.233, 3.445);
print_r(get_object_vars($p1));

$p1->setLabel("point #1");
print_r(get_object_vars($p1));
Array
(
[x] => 1.233
[y] => 3.445
[label] =>
)
Array
(
[x] => 1.233
[y] => 3.445
[label] => point #1
)

get() 方法后添加 getList() 方法

具体修改如下:

1、在 ​​/vendor/laravel/framework/src/Illuminate/Support/Collection.php​​ 的 toAarray 方法下,增加一个getList方法。

public function getList(){
return array_map('get_object_vars', $this->items);
}

2、然后就可以这样来查列表了

<?php

namespace App\Http\Controllers;

use App\TestUser;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class TestController extends Controller
{

public function modelGet()
{
$res=DB::table('test_users')->select('id','name','email')
->offset(0)->limit(5)
->orderBy('id', 'desc')->get()->getList();
return $res;
}

}

3、返回的正是我所想要的数组,如下图:

[
{
"id": 1000000,
"name": "yuta.nakamura",
"email": "[email protected]"
},
{
"id": 999999,
"name": "uno.maaya",
"email": "[email protected]"
},
{
"id": 999998,
"name": "saito.kenichi",
"email": "[email protected]"
},
{
"id": 999997,
"name": "takuma91",
"email": "[email protected]"
},
{
"id": 999996,
"name": "haruka66",
"email": "[email protected]"
}
]


标签:Laravel,toArray,findOrFail,name,get,getList,label,返回,id
From: https://blog.51cto.com/u_13571520/6046466

相关文章

  • laravel框架php artisan vendor:publish的作用
     场景在使用laravel框架的时候phpartisanvendor:publish#可以把对应的服务提供者的资源文件,复制到指定的路径下。 一般用法phpartisanvendor:publish--pr......
  • 【PHP 随记】—— laravel 项目环境搭建
    文章目录​​1、安装laravel以及phpstorm开发插件​​​​2、配置虚拟主机与绑定hosts文件​​​​①配置虚拟主机​​​​②hosts绑定​​​​③验证​​​​3、......
  • laravel-admin基本使用
    如何用这个去做实现后台简单功能。【1】laravel-admin的安装https://laravel-admin.org/docs/zh/1.x/installation#生成的文件1.首先我们要确保已经安装了laravel 我使......
  • Laravel Composer could not install tymon/jwt-auth
    Problem1-Rootcomposer.jsonrequirestymon/jwt-auth^0.5.12->satisfiablebytymon/jwt-auth[0.5.12].-tymon/jwt-auth0.5.12requiresilluminate/......
  • group by和union,Laravel分页
    $res3=DB::table('users')->join('user_folow_boutiques','user_folow_boutiques.user_id','=','users.id')->join('boutique'......
  • laravel composer扩展包的开发到发布
    1、通过Composer创建项目composercreate-project--prefer-distlaravel/laravelpkg2、新建目录接着进入此项目中,创建目录 packages/{your_name}/{your_package......
  • laravel groupBy 分页
    $model=DB::table('tablebname')->where(function($query)use($res){ $query->where('xx','xx');})->selectRaw("area,from_un......
  • laravel出现Please provide a valid cache path.
    访问首页出现如下提示:Pleaseprovideavalidcachepath.解决方法如下:1、确保storage目录下有如app,framework,views三个目录。2、确保storage/framework目录下也有cach......
  • Laravel + Vue 3(Vite、TypeScript)SPA 设置
    在本教程中,我将向大家展示如何使用Laravel+Vue3使用typescript和Vite设置你自己的单页应用程序。这是在Laravel项目中添加PWA的手动方法。我们不会使用Inerti......
  • Laravel9+Vue+ElementUI后台快速开发框架
    项目介绍一款PHP语言基于Laravel9.x、Vue、ElementUI等框架精心打造的一款模块化、插件化、高性能的前后端分离架构敏捷开发框架,可用于快速搭建前后端分离后台管理系统,本......