乐趣区

关于laravel:laravel-文档摘要2

数据库对于数据的保留

数据库第一二三范式到底在说什么
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…

退出移动版