propel/propel-laravel

Laravel 框架的 Propel 集成。

dev-master 2019-03-06 01:52 UTC

This package is auto-updated.

Last update: 2024-09-06 13:55:33 UTC


README

为 Laravel 框架提供 Propel2 集成。仅支持 5.x 版本。4.x 版本可以在当前包的 初始开发者 的仓库中找到。

用法

首先:你需要理解,当前包正处于快速开发中。我们努力维护 1.* 分支的稳定性和测试性,因为 100 万名愤怒的开发者正在使用它,他们手持枪支。Propel2 看起来相当稳定,但仍在开发中,目前它要求你的安装必须具有至少 alpha 稳定性。打开你的 composer.json 文件,在 config 部分之后写入

"config": {
    "preferred-install": "dist"
},
"minimum-stability": "alpha"

使用以下命令使用 composer 安装此包

composer require propel/propel-laravel

更新 composer 后,将 ServiceProviders 添加到 app/config/app.php 中的 providers 数组

Propel\PropelLaravel\PropelIntegrationServiceProvider::class,

下一步是将示例配置复制到你的 app/config 目录。

php ./artisan vendor:publish --provider 'Propel\PropelLaravel\RuntimeServiceProvider'

在提供的配置中:schema 文件位于 database/ 文件夹中,模型生成到 app/models,迁移到 app/database/migrations

你现在可以通过 artisan 使用 Propel 命令,例如

php ./artisan propel:model:build

等等。

对于新用户来说,有创建示例 schema.xml 文件的命令

php ./artisan propel:schema:create

如果你正在尝试在现有数据库上使用 Propel2 — 你可以使用 反向数据库 命令

php ./artisan propel:database:reverse mysql

从版本 2.0.0-alpha5 开始,在配置中有一个很棒的节点 exclude_tables,它允许你在同一个数据库中混合不同的项目表。

小提示:你可以在 schema 中将所有生成模型的命名空间定义为数据库的属性

<database … namespace="MyApp\Models">

认证

该包包含 Auth 驱动绑定,允许存储用户信息并获取(Auth::getUser())当前登录用户作为 propel 模型。你需要在 config/auth.php 中更改两个设置

'driver' => 'propel', // custom auth provider implemented in current package
…
'model' => MyApp\Models\User::class, // classname of user entity

在创建 schema 和生成模型之后,你必须增强你的模型以实现所有 Laravel Auth 要求。通用用户模型看起来是这样的

use MyApp\Models\Base\User as BaseUser;
use Illuminate\Auth\Authenticatable;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

class User extends BaseUser implements AuthenticatableContract, CanResetPasswordContract
{
    use Authenticatable, CanResetPassword;

    public function getAuthIdentifier()
    {
        return $this->id;
    }
}

静态配置

默认情况下,它从运行时的主配置 app/config/propel.php 中构建配置,但你可以通过运行来构建静态配置 app/propel/config.php

php ./artisan propel:config:convert

服务

不提供任何服务。

Propel 通过使用静态方法和它自己的服务容器来自配置和管理自己,因此没有服务被注册到 Application 中。实际上,GeneratorServiceProvider 类通过前缀 propel: 将 Propel 任务注入 artisan 任务列表中,RuntimeServiceProvider 类初始化 Propel 运行时配置

已知问题

  • Cli 命令 propel:database:reverse 将反向 schema 文件保存到项目根目录
  • 没有 schema 文件和初始用户创建命令,但它在我们的 路线图 中,并将很快到来

作者

第一版由 Alex Kazynsky 编写。现在由 Alexander ZhuralvevMaxim Soloviev 维护。感谢每一位 作者!任何错误报告和拉取请求都受到欢迎!

另请参阅

让Propel模型与Laravel Form::model()一起工作,而不将其转换为数组