Eloquent ORM - 建立 Model

表单长好之後准备来新增跟查询资料啦。

Laravel 原生有 DB 类别来帮助查询跟新增资料,像是

$users = DB::table('users')->get(); //取出 users 表单的所有资料

不过 DB 主要就是单纯的查询跟写入功能,对於写入前跟读取後的资料处理都要再另外进行。

这部分就是 Eloquent ORM 的长处了,Eloquent 会针对各表单建立 Model 类别,在这个 Model 中可以定义各栏位写入跟读取时的额外处理,像是型别转换或编译、解析 Json 资料,或是限制某些栏位不被直接写入(像是外键 id),又或是在大量读取资料时不包含指定栏位等等。在 Model 设定之後进行查询的程序码都可以简化成几个简单的函式,整体上可以让程序码更简洁、更容易阅读。

Model

首先用指令产生 Model

sail artisan make:model Todo

产生的 Model 预设放在 App\Models 底下。

如果是已经用 migration 建好了表单,要产生对应的 Model 的话就要注意 Model 的名称,以 Todo 为例, Eloquent 在执行查询时会自动找寻名称为 todos 的表单。

也可以直接从 Model 开始建立,建立时在一并产生 migration 档案

sail artisan make:model Todo -m

除了 migration 外也可以同时产生 Controller,Seeder(种子资料),Factory(自动产生种子资料值)档案

sail artisan make:model Todo -m -c -s -f
sail artisan make:model Todo -mcsf  //功能跟上面相同

-c 指令产生的 controller 会是全空的,可以再加上 -r (resource)或 --api (api source) 指令产生预设的函式

sail artisan make:model Todo -mcsfr

也有直接产生全餐的指令

sail artisan make:model Todo -a

-a 指令产生的 controller 预设是用 resource controller,可以加上 --api 修改成 api soucre。

sail artisan make:model Todo -a --api

这样就省去自己一个个建立的时间了,再到 routes/web.php 加上

// routes/api.php
use App\Http\Controllers\TodoController;

//...

Route::resource('todo', TodoController::class);

这样 CRUD 的路由就都开通了,可以直接开始实作。

References

Eloquent:Getting Started

<<:  Day09 React Props- Array.map()

>>:  纯手工打造UART版资料清洗工具 之 com0com for win10 x64 工具介绍

Day 21:工作术

前言 工作术不只是工作上,还有自己想做的事情,目的都是在一样的时间内做更多事情,且挤出更多时间。 聪...

Day 12:AWS是什麽?30天从动漫/影视作品看AWS服务应用 -《JoJo的奇妙冒险》第三季 part 2

希望前一日的吉良吉影解说还是够ㄎ一ㄤ,大家不要向大会检举有人在呼麻写文章QQ 虽说Jojo不相称的经...

NetSuite Glossary

今天继续介绍 NetSuite 几个基本的 Glossary, 这些 Glossary 经常会出现在...

Day10 - 基础篇总结 ,CI/CD 的功用为何 ?

如何实现一套基础开发流程? 在前面的章节里谈到了 GCP、Docker、Cloud Run 等技术,...

用React刻自己的投资Dashboard Day27 - 台股技术面刻板

tags: 2021铁人赛 React 一般来说刻板前应该会需要画个wireframe会比较清楚一些...