数据库对于数据的保留
数据库第一二三范式到底在说什么
https://zhuanlan.zhihu.com/p/...
数据库的操作独立于 query builder 和 ORM 的存在
ORM 的操作是在操作内存对象 是独立的
ORM 的一个对象自带了操作 relationship 的办法
query builder 的操作是在模仿 SQL 句子,它自带了很多 SQL 句子模板
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/que...
https://ruby-china.github.io/...
Active Record
在大多数状况下,Active Record 使你无需应用 SQL
(因为 stdClass 对象自身就是通过执行 SQL 失去一行、放在程序内存中,赋予一个变量 $post )
https://ruby-china.github.io/...
Eloquent 和模型对象
https://laravel.com/docs/mast...
Eloquent (操作模型对象) 能够买通都到 query builder
relationships also serve as powerful query builders
https://laravel.com/docs/mast...
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/mast...
Eloquent (操作模型对象) eager loading
1
load
with
对于 eager loading 如同是两次查问
https://laravel.com/docs/mast...