panda-fire/core-bundle

此包已废弃且不再维护。未建议替代包。

让这个包高效地组织您的任务

安装: 188

依赖者: 0

建议者: 0

安全: 0

星标: 2

关注者: 1

分支: 0

公开问题: 1

类型:symfony-bundle

dev-master / 1.0.x-dev 2016-02-01 23:16 UTC

This package is not auto-updated.

Last update: 2018-02-27 12:49:07 UTC


README

Build Status SensioLabsInsight

介绍

想象一下,你有许多任务要执行,每个任务都有自己的截止日期。想象一下,这些任务会告诉你正确的顺序来完成所有事情。想象一下,这些任务会告诉你你正在尝试做不可能的事情。这就是PandaFire的诞生以及它想为你实现的目标。

你所需要知道的就是任务的截止日期和其长度。然后点击。PandaFire将立即告诉你其可行性以及何时做才能尽可能高效。

因为你想完成任务。

安装

通过Composer下载插件

$ composer require panda-fire/core-bundle

启用插件

app/AppKernel.php文件中,添加以下行

<?php

use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // other bundles ...
            new PandaFire\CoreBundle\PandaFireCoreBundle(),

        return $bundles;
    }

使用XML创建用户和任务类

用户

<!-- AppBundle/Resources/config/doctrine/User.orm.xml -->
<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">

    <entity name="AppBundle\Entity\User" table="user">

        <id name="id" type="integer">
            <generator strategy="AUTO" />
        </id>

        <!-- PandaFire required properties -->
        <field name="startWorkingHour" type="integer" column="start_working_hour" />
        <field name="endWorkingHour" type="integer" column="end_working_hour" />
        <field name="startBreakHour" type="integer" column="start_break_hour" />
        <field name="endBreakHour" type="integer" column="end_break_hour" />
        <field name="daysOff" type="array" column="days_off" nullable="true" />

        <one-to-many target-entity="AppBundle\Entity\Task" mapped-by="owner" field="timeSortableItems" />
        <!-- End PandaFire required properties -->
    </entity>

</doctrine-mapping>
<?php
// src/AppBundle/Entity/User.php
namespace AppBundle\Entity;

use PandaFire\CoreBundle\Model\TaskOwner;

class User extends TaskOwner
{
    // your custom logic
}

任务

<!-- AppBundle/Resources/config/doctrine/Task.orm.xml -->
<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">

    <entity name="AppBundle\Entity\Task" table="task" repository-class="PandaFire\CoreBundle\Repository\ORM\TimeSortableItemRepository">

        <id name="id" type="integer">
            <generator strategy="AUTO" />
        </id>

        <many-to-one target-entity="User" field="owner" inversed-by="timeSortableItems">
            <join-column on-delete="CASCADE" />
        </many-to-one>

    </entity>

</doctrine-mapping>
<?php
// src/AppBundle/Entity/Task.php
namespace AppBundle\Entity;

use PandaFire\CoreBundle\Model\TimeSortable;

class Task extends TimeSortable
{
    /**
     * @var User
     */
    protected $owner;
}

配置

配置PandaFireCoreBundle

panda_fire_core:
    db_driver: orm                          # Only driver supported at the moment
    task_class: AppBundle\Entity\Task     # Your "task" object class

运行迁移

使用以下命令更新你的模式

$ php app/console doctrine:schema:update --force

更进一步

与FOSUserBundle集成

  1. 安装并配置FOSUserBundle
  2. 创建实体
  3. 启用包
  4. 更新数据库模式

步骤1:FOSUserBundle安装和配置

按照相关文档中的说明安装FOSUserBundle。一旦一切正常,请继续以下步骤。

步骤2:创建实体

按照以下方式将所需属性添加到你的Resources/config/doctrine/User.orm.xml模型配置文件中

<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">

    <entity name="AppBundle\Entity\User">

        <id name="id" type="integer">
            <generator strategy="AUTO" />
        </id>

        <!-- PandaFire -->
        <field name="startWorkingHour" type="integer" column="start_working_hour" />
        <field name="endWorkingHour" type="integer" column="end_working_hour" />
        <field name="startBreakHour" type="integer" column="start_break_hour" />
        <field name="endBreakHour" type="integer" column="end_break_hour" />
        <field name="daysOff" type="array" column="days_off" nullable="true" />
         <!-- End PandaFire -->

        <one-to-many target-entity="Task" mapped-by="owner" field="timeSortableItems" />
    </entity>

</doctrine-mapping>

要轻松添加类的getters/setters,只需使用提供的Trait即可

<?php

namespace AppBundle\Entity;

use FOS\UserBundle\Model\User as FOSUser;
use PandaFire\CoreBundle\Model\TaskOwnerTrait;

class User extends FOSUser
{
    use TaskOwnerTrait;
}

AppBundle/Resources/config/doctrine/Task.orm.xml中的映射文件开始创建Task实体...

<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">

    <entity name="AppBundle\Entity\Task" repository-class="PandaFire\CoreBundle\Repository\ORM\TimeSortableItemRepository">

        <id name="id" type="integer">
            <generator strategy="AUTO" />
        </id>

        <many-to-one target-entity="User" field="owner" inversed-by="timeSortableItems">
            <join-column on-delete="CASCADE" />
        </many-to-one>

    </entity>

</doctrine-mapping>

以及其实体文件在AppBundle/Entity/Task.php

<?php

namespace AppBundle\Entity;

use PandaFire\CoreBundle\Model\TimeSortable;

class Task extends TimeSortable
{
    /**
     * @var User
     */
    protected $owner;
}

注意,属性$owner不必定义,但使类型提示对开发者更友好;)

步骤3:启用包

app/AppKernel.php文件中启用插件

<?php

use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // other bundles ...
            new AppBundle\AppBundle(),
            new FOS\UserBundle\FOSUserBundle(),
            new PandaFire\CoreBundle\PandaFireCoreBundle(),

        return $bundles;
    }

app/config/config.yml中配置包

panda_fire_core:
    db_driver: orm                      # Only supported driver at the moment
    task_class: AppBundle\Entity\Task   # You task entity class

步骤4:更新数据库模式

只需运行以下命令

$ php app/console doctrine:schema:update --force

然后,就这样!