ushergodwin / razer-framework

Razer 是一个提供强大系统开发便利 MVC(模型-视图-控制器)结构的 PHP 框架。

安装: 3

依赖: 0

建议: 0

安全性: 0

星标: 3

关注者: 1

分支: 0

开放问题: 0

语言:JavaScript

v1.1.3 2022-05-14 19:37 UTC

This package is auto-updated.

Last update: 2024-09-15 01:15:00 UTC


README

  • Razer 是一个 PHP 框架,为系统开发提供便利的 MVC(模型、视图、控制器)结构。
  • 你想要一个小巧但功能强大的框架吗?这是你的最佳选择

目录

数据库

  1. 插入
  2. 更新
  3. 删除
  4. 截断
  5. 受影响行数
  6. 获取数据
  7. 连接表
  8. Eloquent 模型
  9. 迁移

HTTP

  1. 请求
  2. 响应
  3. 重定向
  4. 路由

插入一个或多个

// 对于多个,提供一个数据数组的数组。 DB::table('table_name')->save($data);

最后插入 ID

DB::lastId();

更新记录

DB::table('table_name')->where('id', 1)->update($data);

删除记录

DB::table('table_name')->where('id', 1)->delete();

截断整个表

DB::table('table_name')->delete();

受影响行数

DB::affectedRows();

获取全部

DB::table('table_name')->get(); // 返回所有列

获取特定列

$columns = 'column1, column2, column3 columnn' // 作为字符串

或者

$columns = ['column1', 'column2', 'column3', 'columnn'] // 作为数组 DB::table('table_name')->get($columns);

根据条件获取全部列

DB::table('table_name')->where('id', 1)->get();

根据多个条件获取全部列

// 多次调用 where 方法创建 WHERE AND AND AND ... // 调用 orWhere 来添加 OR DB::table('table_name')->where('id', 1)->where('age', 20, '>')->where('gender', 'Male')->get();

根据条件获取一行

DB::table('table_name')->row()->where('id', 1)->get();

或者

DB::table('table_name')->find(1); // 默认列名为 'id'

获取一个值

DB::table('table_name')->where('id', 1)->value();

计数行数

DB::table('table_name')->where('id', 1)->count(); DB::table('table_name')->count(); // 无条件获取所有行

最大值 / 最小值 / 平均值

DB::table('table_name')->where('id', 1)->max(); DB::table('table_name')->where('id', 1)->min(); DB::table('table_name')->where('id', 1)->avg();

选择不同的值

DB::table('table_name')->distinct()->get(); // 提供列名,如果非全部 // 条件下的不同 DB::table('table_name')->distinct()->where('id', 1)->get();

连接表

DB::table('table_name')->join('table2', 'table1.primary', 'table2.foregin')->get();

// 多次调用 join 方法使用 INNER JOIN 连接多个表。其他连接方法选项包括 leftJoin(), rightJoin(), unionJoin()

使用 BETWEEN 子句进行选择

DB::table('table_name')->between('age', 20, 25)->get();

选择用于分页的数据

DB::table('table_name')->range(1, 25)->get();

检查记录是否存在

DB::table('table_name')->where('id', 1)->exists(); // 如果存在则返回 true

检查记录是否存在

DB::table('table_name')->where('id', 1)->doesNotExist(); // 与 exist 相反

在查询之前使用不同的数据库

Database::switchTo('database_name'); // 从这里开始查询

在查询时使用不同的数据库

DB::table('table_name')->use('database_name', 'table')->get();

Eloquent 模型

  • 你可以扩展 Model 类,以便你的模型在相应的表名上被调用。
  • 模型名称应为单数,表格名称应为复数形式
  • Eloquent模型会在查询模型对象之前将模型名称从单数转换为复数。

插入

$interns = new Intern($data); $interns->save();

受影响行数

$interns->affectedRows();

最后插入 ID

$interns->lastId();

插入时的魔法赋值

$interns = new Intern(); $interns->name = "Godwin"; $interns->age = 20; $inters->save();

更新一个模型

Intern::find(1)->update($data);

删除一个资源

Intern::find(5)->delete();

获取所有

Intern::all(); // 与 DB::table('interns')->get(); 相同

带条件获取所有

Intern::where('id', 1)->get(); // 与 DB::table('interns')->where('id', 1)->get(); 相同

获取一个

Intern::find(1);

连接模型

Intern::with('course')->get(); // 这将假定实习生和课程表使用ID列作为其主键,形成INNER JOIN courses ON interns.course_id = courses.id

使用查询构建器连接

Interns::with('course')->join('supervisor', 'interns.supervisor_id', 'supervisor.id')->get();

执行自定义查询

DB::query('SELETE * FROM interns WHERE age > ?')->bindings([20])->get();

  • 只有带绑定的查询才会通过查询方法执行

迁移

创建数据库:| php manage make:db 如果在.env配置文件中没有指定数据库名称,使用 php manage make:db dbname

创建迁移:| php manage make:migration create_migration_name 这将在数据库/migrations目录下创建一个迁移文件。(表名应为复数形式)

运行所有迁移:| php manage migrate 这将运行所有迁移

运行特定文件迁移:| php manage migrate --file=filename 这将为单个文件运行迁移。(不要放文件扩展名)

将迁移分组到1个SQL文件 | php manage migrate:group 所有迁移文件将组合成一个SQL文件

运行分组迁移:| php mange migrate:group --run 这将运行分组迁移

运行迁移修改 | php manage migrate:modifiy 这将运行迁移修改

列出迁移:| php manage migrate:list 列出所有已运行的迁移

删除迁移:| php manage migrate:rollback 回滚迁移

删除并重新运行迁移:| php manage migrate:refresh 回滚并重新运行迁移

显示迁移日志/错误:| php manage migrate:log 记录迁移错误

清除迁移日志/错误:| php manage migrate:log --clear 清除迁移错误

控制器和模型

情况:所有控制器和模型应使用驼峰命名法,并且应为单数形式

创建控制器:| php manage make:controller ControllerName

  • //在单数形式下,将在app/Controller/下创建一个控制器
  • 资源控制器已创建,具有index、create、store、show、edit、update和destroy方法

创建资源控制器:| php manage make:controller ControllerName --resource

  • // 创建一个具有CRUD方法的资源控制器

创建模型:| php manage make:model ModelName

  • //在单数形式下,将在app/Models下创建一个模型

创建模型及其迁移:| php manage make:model -M ModelName

  • //在单数形式下

模板

清除缓存:| php manage cache:clear

请求

  • 所有通过HTTP POST请求接收数据的操作方法都应该有一个$request参数
  • HTTP POST

public function saveUser(Request $request) { $name = $request->post('name'); // 获取通过HTTP POST发送的name的值 echo $name; }

// 或 public function saveUser(Request $request) { $name = $request->name; // 动态分配属性,请求类 echo $name; }

或者 public function saveUser(Request $request) { $name = $request->body->name; // 动态分配 Request 类的属性 echo $name; }

  • HTTP GET

public function saveUser(Request $request) { $name = $request->get('name'); // 获取通过 HTTP GET 发送的名字 echo $name; }

或者 public function saveUser(Request $request) { $name = $request->name; echo $name; }

或者 public function saveUser(Request $request) { $name = $request->params->name; echo $name; }

响应

响应类有 2 个方法,即 send 和 json。send() 发送纯文本响应,而 json 发送 JSON 格式的响应。

  • 这两个方法都有 2 个参数
  1. status --> HTTP 状态码。支持的状态码有 200、202、302、400、401、402、403、404、408、422、500、502
  2. Message --> 要发送的文本/JSON 响应。
  • HTTP 纯文本响应

public function login(Request $request) { $email = $request->post('email'); return response()->send(200, $email); }

  • HTTP JSON 响应

public function login(Request $request) { $email = $request->post('email'); return response()->json(200, $email); // 可以通过 message 属性接收 }

重定向

redirect('user/dashboard');

  • 返回 redirect()->back();

路由

  • 路由类有 6 个方法,get、post、group、except、name 和 resource
  • GET

  • get 和 post 方法需要 2 个参数,$url(要去的 URL)和 $callback,一个控制器名称及其方法的数组
  • 简单的 get 路由 Route::get('user/profile', [UserController::class, 'userProfile']);
  • POST

  • 简单的 post 路由 Route::post('user/profile', [UserController::class, 'userProfile']);
  • GROUP

  • 接受 2 个参数,$prefix(数组),$callback(闭包)
  • Route::group(['prefix' => 'admin', function(){ Route::get('/dashboard', [AdminController::class, 'index']); }); 在模板 ` <a href='{{ url('admin/dashboard') }}'>Dashboard
  • Resource

  • 这个路由方法用于为资源控制器创建路由
  • Route::resource('products', ProductController::class); // products 是路由的前缀
  • 以上创建以下路由
  • /products (GET)
  • /products (PUT)
  • /products/create (GET)
  • /products/product_id (GET)
  • /products/product_id/edit (GET)
  • /products/product_id (DELETE)
  • /products/store (POST)
  • Except

  • 您可以通过 except 方法在创建路由时忽略指定的类方法 Route::resource('products', ProductController::class)->except(['destroy']);
  • name

  • 除了 get 和 post 方法,您还可以调用 name 方法并注册一个简短的路由名称以使用。这个名称必须在路由方法中使用
  • 在路由 Route::post('user/profile', [UserController::class, 'userProfile'])->name('user.p');
  • 在模板 <a href='{{ route('user.p') }}'>Dashboard</a> // 带你到 user/profile

结束