ycms / redbean
Redbean 4 的 Laravel 4 实现。
Requires
- php: >=5.4.0
This package is not auto-updated.
Last update: 2024-09-14 18:14:59 UTC
README
A Laravel 4 包,用于 RedBeanPHP ORM 4.1
这是一个 Laravel 4 包,允许使用Redbean PHP ORM版本4.1。
如何安装
添加
"mamift/redbean4-laravel4":"dev-master"
到您的composer.json文件中。然后在config/目录下app.php中的Laravel服务提供者数组中添加此行
'Mamift\Redbean4Laravel4\Redbean4Laravel4ServiceProvider'
,这样RedBeanPHP就会使用Laravel的数据库设置(位于database.php中)进行设置。
由于RedBeanPHP还包括它自己的外观类("R"),因此无需在别名数组中添加任何内容。
用法
阅读RedBeanPHP的文档以了解您可以使用RedBean做什么的完整概述。由于此包包含未经修改的完整rb.php文件,因此RedBean的API文档页面上的每个可编程接口都应该可用。
一个示例
$user = R::dispense('user');
$user['description'] = "Lorem ipsum dolor sit amet, consectetur" + adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
$user->username = "mamift";
$user->gender = R::enum('gender:male');
R::store($user);
为什么要在Laravel中使用RedBean?
RedBean是一种非常灵活的方式来填充数据库,无需担心外键关系或您的表结构;它在某种程度上是'无模式的',因为它将构建适当的数据库和表结构,而无需您担心细节。因此,它是快速原型化Laravel应用后端的一种 neat 方法。例如,您可以将RedBean用作Laravel的Schema Builder的懒人替代品,并跳过单独的种子步骤,因为您可以在一个迁移步骤中定义模式并使用值填充表。
在上面的示例中,以下行是
$user->gender = R::enum('gender:male');
RedBean将创建一个单独的表'gender',并包含适当的主键(当您使用MySQL时,是一个 AUTO_INCREMENTING 'ID' 列)。每次您再次使用 R::enum()(例如, R::enum('gender:female')),RedBean就会在'gender'表中添加另一个'female'记录。
注意它没有使用内置的[ENUM]数据类型作为列类型;这使您能够定义另一个可以使用相同值集合的bean(表)。
RedBean还会根据您的bean属性值确定适当的数据类型。在上面的示例中, $user['description'] 存储为 TEXT,而 $user->username 存储为 VARCHAR(255)。
当回滚Laravel迁移时,您可能还需要使用Schema builder方法,例如 Schema::drop('user') 或 Schema::drop('gender'),因为RedBean没有提供删除表模式的方法。相反,它允许您使用 R::wipe('user') 删除bean的所有实例(相当于删除表中的所有行)。
但是,RedBean允许您使用 R::nuke() 在一个步骤中完全销毁所有表,但这将销毁数据库中的所有内容,包括 migrations 表。
关于此包如何在Laravel中公开RedBean的说明
由于RedBean的作者使用PHP命名空间的方式(它似乎不符合PSR-4规范),他没有提供自己的composer.json,因此rb.php文件(RedBeanPHP通常分发的文件)似乎不能由Laravel自动加载。
此包所做的是为每个请求加载rb.php。在composer.json中的"autoload" JSON对象下,rb.php被指定为"files"数组的一部分
{
"autoload": {
"files": [
"src/Mamift/Redbean4Laravel4/rb.php"
]
}
}
来自Composer文档的引用说
如果您希望在每个请求中显式地要求某些文件,则可以使用 'files' 自动加载机制。当您的包中包含无法由PHP自动加载的PHP函数时,这非常有用。
由于rb.php在每个请求中都会被加载,可能会产生轻微的性能损失。