Properties

$modelClass

$modelClass : string

Type

string

$isEloquent

$isEloquent : bool

Type

bool

$factory

$factory : \Framework\Database\DatabaseFactory

Type

\Framework\Database\DatabaseFactory

$injectionMetaCache

$injectionMetaCache : array

反射元数据缓存,避免重复反射同一个类 格式: [ ClassName => [ [property_name, attribute_instance, type_name], ... ] ]

Type

array

$userService

$userService : \App\Services\UserService

Type

UserService

Methods

__construct()

__construct(\Framework\Database\DatabaseFactory  $factory) : mixed

Parameters

\Framework\Database\DatabaseFactory $factory

Returns

mixed —

__invoke()

__invoke(?string  $modelClass = null) : mixed

语法糖:$repo() 获取底层 Builder

Parameters

?string $modelClass

Returns

mixed —

findById()

findById(int|string  $id, array  $with = []) : mixed

根据主键查找

Parameters

int|string $id
array $with

Returns

mixed —

findOneBy()

findOneBy(array  $criteria, array  $with = []) : mixed

根据条件查找单条

Parameters

array $criteria
array $with

Returns

mixed —

findAll()

findAll(array  $criteria = [], array  $orderBy = [], ?int  $limit = null, array  $with = []) : mixed

根据条件查找多条记录

Parameters

array $criteria

查询条件 ['status' => 1]

array $orderBy

排序 ['id' => 'desc']

?int $limit

限制条数

array $with

Returns

mixed —

paginate()

paginate(array  $criteria = [], int  $perPage = 15, array  $orderBy = [], array  $with = []) : mixed

分页查询

Parameters

array $criteria
int $perPage
array $orderBy
array $with

Returns

mixed —

increment()

increment(int|string  $id, string  $field, int  $amount = 1, array  $extra = []) : bool

自增操作 (通用)

Parameters

int|string $id

主键

string $field

字段

int $amount

增加数量

array $extra

同时更新的其他字段

Returns

bool —

decrement()

decrement(int|string  $id, string  $field, int  $amount = 1, array  $extra = []) : bool

自减操作 (通用)

Parameters

int|string $id
string $field
int $amount
array $extra

Returns

bool —

create()

create(array  $data) : mixed

创建数据

Parameters

array $data

Returns

mixed —

update()

update(int|string  $id, array  $data) : bool

更新数据

Parameters

int|string $id

主键

array $data

更新内容

Returns

bool —

updateBy()

updateBy(array  $criteria, array  $data) : int

新增:按条件批量更新(返回受影响行数)

Parameters

array $criteria
array $data

Returns

int —

delete()

delete(int|string  $id) : bool

删除数据

Parameters

int|string $id

Returns

bool —

deleteBy()

deleteBy(array  $criteria) : int

新增:按条件批量删除(返回受影响行数)

Parameters

array $criteria

Returns

int —

aggregate()

aggregate(string  $type, array  $criteria = [], string  $field = '*') : string|int|float

聚合统计 (count, sum, max)

Parameters

string $type

统计类型

array $criteria
string $field

字段名

Returns

string|int|float —

transaction()

transaction(\Closure  $callback) : mixed

数据库事务闭包

Parameters

\Closure $callback

Returns

mixed —

query()

query(string  $sql, array  $bindings = []) : array

执行原生 SQL 查询 (SELECT)

Parameters

string $sql
array $bindings

Returns

array —

返回数组结果集

execute()

execute(string  $sql, array  $bindings = []) : int

执行原生 SQL 指令 (INSERT, UPDATE, DELETE)

Parameters

string $sql
array $bindings

Returns

int —

返回受影响的行数

findActiveWithPosts()

findActiveWithPosts(int  $limit = 50) : mixed

示例自定义方法:查找活跃用户并返回带 posts 关系(避免 N+1)

Parameters

int $limit

Returns

mixed —

deactivateOldUsers()

deactivateOldUsers(string  $beforeDate) : int

示例:按 DSL 更新

Parameters

string $beforeDate

Returns

int —

findActiveVips()

findActiveVips(int  $id = 2) : mixed

Parameters

int $id

Returns

mixed —

checkLog()

checkLog() : mixed

Returns

mixed —

findActiveShoppers()

findActiveShoppers(int  $days = 30, int  $perPage = 15) : mixed

场景:复杂子查询 目标:查找所有“有最近30天内有过消费记录”的用户,并分页

这里演示如何在 Repository 内部处理 ORM 语法差异,对外只暴露结果

Parameters

int $days
int $perPage

Returns

mixed —

getUserRegionReport()

getUserRegionReport() : array

场景:原生 SQL 复杂报表 目标:统计每个地区的用户数量,过滤掉人数少于 10 的地区

Returns

array —

getUserStatByRawSql()

getUserStatByRawSql() : mixed

示例:复杂报表,使用原生 SQL

Returns

mixed —

initialize()

initialize() : void

子类可根据需要覆盖 lifecycle

isModelClass()

isModelClass() : bool

判断是否配置了有效的模型类

Returns

bool —

newQuery()

newQuery() : mixed

Returns

mixed —

applyWith()

applyWith(mixed  $query, array  $with = []) : mixed

统一处理 Eager Loading

Parameters

mixed $query
array $with

Returns

mixed —

buildQuery()

buildQuery(mixed  $query, array  $criteria, array  $orderBy = []) : mixed

QueryDSL 支持: ---------------------------------------- ['status' => 1] ['age' => ['>', 18]] ['price' => ['between', [10, 30]]] ['title' => ['like', '%abc%']] ['id' => ['in', [1,2,3]]] ['or' => [...]] ['group' => function($q){...}] ['raw' => 'id > 10']

Parameters

mixed $query
array $criteria
array $orderBy

Returns

mixed —

inject()

inject() : void

执行依赖注入

parseInjectionMeta()

parseInjectionMeta(string  $className) : array

解析类的属性元数据

Parameters

string $className

Returns

array —

resolveDependency()

resolveDependency(object  $attr, ?string  $type) : mixed

根据注解类型解析依赖

Parameters

object $attr
?string $type

Returns

mixed —