ushergodwin / razer-framework
Razer 是一个提供强大系统开发便利 MVC(模型-视图-控制器)结构的 PHP 框架。
Requires
- php: >= 7.4
- ext-pdo: *
- ushergodwin/razer: ^1.0@alpha
README
- Razer 是一个 PHP 框架,为系统开发提供便利的 MVC(模型、视图、控制器)结构。
- 你想要一个小巧但功能强大的框架吗?这是你的最佳选择
目录
数据库
HTTP
插入一个或多个
// 对于多个,提供一个数据数组的数组。 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
- 有关更多信息或查询,请拨打
- +256 754438448 或
- 电子邮件 godwintumuhimbise96@gmail.com
请求
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; }
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 个参数
- status --> HTTP 状态码。支持的状态码有 200、202、302、400、401、402、403、404、408、422、500、502
- Message --> 要发送的文本/JSON 响应。
public function login(Request $request) { $email = $request->post('email'); return response()->send(200, $email); }
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