laravel 文档摘要2

数据库对于数据的保存

数据库第一二三范式到底在说什么
https://zhuanlan.zhihu.com/p/20028672

数据库的操作独立于 query builder 和 ORM 的存在

ORM 的操作是在操作内存对象 是独立的
ORM 的一个对象自带了操作 relationship 的方法

query builder 的操作是在模拟 SQL 句子,它自带了很多 SQL 句子模板

query builder 的操作可以做到 SQL join 1

Query Builder

use Illuminate\Support\Facades\DB;

$users = DB::table('users')->get();

$user = DB::table('users')->where('name', 'John')->first();

The get() method returns an Illuminate\Support\Collection instance containing the results of the query where each result is an instance of the PHP stdClass object.

The first() method will return a single stdClass object.

1

Query Builder 可以做什么

通过执行 SQL 得到各种各样的 stdClass 对象或 stdClass 对象的集合

通过执行 SQL 得到一行(的所有列)

通过执行 SQL 得到一行的某些列

Query Builder 不可以做什么

操作 relationship 模型间关系

模型

框架从数据库取得的一个条目并
创建一个对象,比如一个 Post 类的实例 (App\Models\Flag::Illuminate\Database\Eloquent\Model),存在于程序内存中

数据库条目 -> 内存对象的映射是由 ORM (Object Relational Mapping) 完成的。之后在内存之中的所有操作都在操作对象,在对象固化的时候会保存或更新一个数据库条目。

一个模型对象是类似充血模型: 充血的 model 层

一个模型对象好像是对于 stdClass 对象的封装并为之赋予了操作 relationship 的能力,通过众多模型方法。这种设计模式叫做 ActiveRecord

ActiveRecord is an ORM. It's a layer of Ruby code that runs between your database and your logic code. 它有什么

https://stackoverflow.com/questions/38562565/what-is-the-difference-between-active-record-and-orm-in-rails

https://ruby-china.github.io/rails-guides/active_record_basic...

Active Record

在大多数情况下,Active Record 使你无需使用 SQL

(因为 stdClass 对象本身就是通过执行 SQL 得到一行、放在程序内存中,赋予一个变量 $post )

https://ruby-china.github.io/rails-guides/active_record_query...

Eloquent 和模型对象

https://laravel.com/docs/master/eloquent

Eloquent (操作模型对象) 可以打通都到 query builder

relationships also serve as powerful query builders

https://laravel.com/docs/master/eloquent-relationships#defini...

Query builder

在使用 SQL 的时候可以用 laravel query builder (它不属于 ORM / larave eloquent / ror ActiveRecord)

query builder 是 code 和 sql 之间薄薄一层,这里不涉及模型对象

$price = DB::table('orders')
                ->where('finalized', 1)
                ->avg('price');

$users = DB::table('users')
            ->where('votes', '>', 100)
            ->orWhere(function(Builder $query) {
                $query->where('name', 'Abigail')
                      ->where('votes', '>', 50);
            })
            ->get();

https://laravel.com/docs/master/queries

Eloquent (操作模型对象) eager loading

1

load
with

关于 eager loading 好像是两次查询

https://laravel.com/docs/master/eloquent-relationships#eager-...

https://github.com/alexeymezenin/laravel-best-practices/blob/master/chinese.md#不要在模板中查询-尽量使用惰性加载

https://lvwenhan.com/laravel/423.html with 关系预载入 / 惰性加载 / eager loading


changsj
changsj.

changsj.

211 声望
11 粉丝
0 条评论
推荐阅读
新前端概念阅读记录1
新前端概念阅读记录1Angular 新纪元: Signals RFC备受Vue、Angular和React青睐的Signals演进史_前端 - Ryan Carniato_InfoQ 精选文章从零到一:从 初识 vue 响应式原理 到 简单设计一个 vue 3 的响应系统

changsj阅读 196

Goravel ORM 新增模型关联,用 Golang 写关联也可以跟 Laravel 简单
Goravel 是一个功能完备、具有良好扩展能力的 Web 应用程序框架。作为一个起始脚手架帮助 Golang 开发者快速构建自己的应用。框架风格与 Laravel 保持一致,让 PHPer 不用学习新的框架,也可以愉快的玩转 Golang!

韩同学的简单逻辑阅读 759

laravel 文档摘要
$request->input('date') 可以是 "2021-01-05 01:00:00" 字符串,通过 Carbon::parse($request->input('date') ?? now_local()),它可以被转化为 CarbonInterface::DateTimeInterface

changsj阅读 731

【第五篇Laravel10权限中间件】Laravel10 + Vue3.0前后端分离框架通用后台源码
②复制Laravel9 + Vue3.0前后端分离框架通用后台源码,backend/app/Http/Kernel.php 搜索 $routeMiddleware

小拼拼阅读 597

【第四篇Laravel10自定义函数】Laravel10 + Vue3.0前后端分离框架通用后台源码
① 新建文件Helpers/functions.php② 编辑composer.json在 autoload 名称中,新增 files例如: {代码...} ③composer的自动加载类命令——composer dump-autoloadvendor/composer/autoload_classmap.phpvendor/compose...

小拼拼阅读 551

【第三篇Laravel10安装依赖】Laravel10 + Vue3.0前后端分离框架通用后台源码
①用于跨域composer require fruitcake/laravel-cors②用于权限composer require laravel/passport③

小拼拼阅读 522

【第二篇Laravel10测试性能及ngnix配置】Laravel10 + Vue3.0前后端分离框架通用后台源码
章节目录【第一篇Laravel10安装】Laravel10 + Vue3.0前后端分离框架通用后台源码①vscode 打开 laravel10-vue3-admin②routes/web.php③新增如下代码 {代码...} ④运行效果,36s⑤分析性能,简单hello都要36s。连接数...

小拼拼阅读 424

changsj.

211 声望
11 粉丝
宣传栏