folded / orm
为您的Web应用程序提供的独立Eloquent ORM。
Requires
- php: >=7.4.0
- illuminate/database: 7.*
- illuminate/events: 7.*
- illuminate/pagination: 7.*
Requires (Dev)
- friendsofphp/php-cs-fixer: 2.*
- pestphp/pest: 0.3.*
- phpstan/phpstan: 0.12.*
- phpunit/phpunit: 9.*
README
为您的Web应用程序提供的独立Eloquent ORM。
摘要
关于
提供独立包,以最小配置在您的Web应用程序中使用Eloquent模型。
Folded是一组包,可以帮助您轻松设置Web应用程序,使用即插即用的包。
- folded/action:一种组织您Web应用程序控制器的方式。
- folded/config:PHP Web应用程序的配置实用工具。
- folded/crypt:为您的Web应用程序加密和解密字符串。
- folded/exception:为您的Web应用程序抛出各种类型的异常。
- folded/history:操作您的Web应用程序的浏览器历史。
- folded/request:PHP Web应用程序的请求实用工具,包括请求验证器。
- folded/routing:PHP Web应用程序的路由函数。
- folded/session:您的Web应用程序的会话函数。
- folded/view:PHP Web应用程序的视图实用工具。
功能
- 提供Laravel的Eloquent的所有功能
- 延迟加载引擎,如果请求未调用eloquent方法,则永远不会启动
- 仅在需要时启用Eloquent事件
要求
- PHP版本 >= 7.4.0
- 已安装Composer
- 了解Eloquent ORM
安装
1. 安装包
在您的根目录中,运行此命令
composer require folded/orm
2. 添加数据库连接
在您使用Eloquent模型之前调用此方法,以提供您的数据库连接信息
use function Folded\addDatabaseConnection; addDatabaseConnection([ "driver" => "mysql", "host" => "localhost", "username" => "root", "password" => "root", ]);
您可以在示例[请在此处放置示例]中查看完整的选项列表。
3. 创建您的模型文件
在任何您想要的地方,创建一个类来映射您的表。
namespace App; use Folded\Model; class Post extends Model { // }
示例
由于此库依赖于Eloquent,您可以在官方文档中找到有关此ORM所有功能的丰富信息。
1. 从您的模型获取所有数据
在这个示例中,我们将使用我们的Post
类来获取所有帖子。
use App\Post; $posts = Post::all(); foreach ($posts as $post) { echo "{$post->title}: {$post->excerpt}"; }
2. 向数据库连接添加更多信息
在这个示例中,我们将看到可以设置在数据库连接上的完整键列表。
use function Folded\addDatabaseConnection; addDatabaseConnection([ "driver" => "mysql", "host" => "localhost", "database" => "my-blog", "username" => "root", "password" => "root", "charset" => "utf8mb4", "collation" => "utf8mb4_general_ci", "prefix" => "wp_", ]);
3. 启用/禁用Eloquent事件
在这个示例中,我们将启用,然后禁用Eloquent事件系统。有关更多信息,请参阅官方文档。
use function Folded\enableEloquentEvents; use function Folded\disableEloquentEvents; enableEloquentEvents(); disableEloquentEvents();
4. 在分页之前转到特定页面
在这个示例中,我们将指示分页器在分页之前转到某个页面。由于我们不在Laravel中,这是必要的,以便根据浏览的页面正确返回项目。
$posts = Post::toPage(2)->paginate(15);
页码应该来自查询字符串,例如当用户浏览 /post?page=2
时。
然而,由于技术原因,我在调用eloquent方法之后无法找到提供相同方法的方式。这意味着以下代码将无法工作
$posts = Post::where("author", "foo")->toPage(2)->paginate(15);
为了解决这个问题,请使用 ->paginate()
的详细版本
$posts = Post::where("author", "foo")->paginate(15, ["*"], "page", 2); // 2 is the page number
版本支持
鸣谢
没有Matt Stauffer的出色工作,这个库就不会问世。[Torch](https://github.com/mattstauffer/Torch)。
Torch是一个项目,旨在为在非Laravel应用程序中使用Illuminate组件(包括Eloquent)提供指导和示例。
给这位先生一杯冰啤酒,[对这个伟大的想法](https://github.com/mattstauffer/Torch) 点一个赞,并关注他的Twitter [@stauffermatt](https://twitter.com/stauffermatt)!