josegonzalez/cakephp-simple-scope

一个简单的 cakephp 行为,用于限定查找范围。

1.1.0 2014-02-15 21:51 UTC

This package is auto-updated.

Last update: 2024-08-29 04:03:20 UTC


README

Build Status Coverage Status Total Downloads Latest Stable Version Documentation Status Gratipay

cakephp-simple-scope

一个简单的 cakephp 行为,用于限定查找范围

背景

我不想写一大堆自定义查找,所以我定义了一个数组,并创建了一个行为来与该数组交互。是的。

需求

  • CakePHP 2.x

安装

[使用 Composer]

将插件添加到项目的 composer.json 文件中 - 例如:

{
	"require": {
		"josegonzalez/cakephp-simple-scope": "dev-master"
	}
}

因为这个插件在它自己的 composer.json 文件中设置了类型 cakephp-plugin,所以 Composer 会知道在你的 /Plugins 目录中安装它,而不是在通常的 vendors 文件中。建议您将 /Plugins/SimpleScope 添加到您的 .gitignore 文件中。(为什么?阅读这里。)

[手动]

[GIT 子模块]

在您的应用目录中输入

git submodule add git://github.com/josegonzalez/cakephp-simple-scope.git Plugin/SimpleScope
git submodule init
git submodule update

[GIT Clone]

在您的插件目录中输入

git clone git://github.com/josegonzalez/cakephp-simple-scope.git SancSimpleScopetion

启用插件

在 2.0 中,您需要在 app/Config/bootstrap.php 文件中启用插件

	CakePlugin::load('SimpleScope');

如果您已经使用了 CakePlugin::loadAll();,则这不是必需的。

用法

将行为附加到您的 AppModel

<?php
App::uses('Model', 'Model');

class AppModel extends Model
{
    public $actsAs = array('SimpleScope.Scope');
}
?>

然后在您的模型中定义一些范围

<?php
App::uses('AppModel', 'Model');

class User extends AppModel
{
    public $scopes = array(
        'active_admin' => array(
            'name' => 'Active admin users',
            'find' => array(
                'type' => 'list',
                'virtualFields' => array(
                    'fullname' => "CONCAT(User.firstname, ' ', User.lastname)"
                ),
                'options' => array(
                    'fields' => array('User.id', 'User.fullname'),
                    'conditions' => array('User.role LIKE' => '%admin%'),
                    'order' => array('User.fullname'),
                ),
            ),
        ),
    );
}
?>

然后执行它

<?php
$activeUsers = $this->User->scopedFind('active_admin');
?>

您也可以将其用作自定义模型查找

<?php
$activeUsers = $this->User->find('active_admin');
?>

您还可以获取范围列表

<?php
scopes = $this->User->scopes();
?>

范围

  • 需要 一个 name 字符串
  • 可选 使用一个 find 数组

范围 find 字段

  • 需要 一个 type 字符串
  • 需要 一个 options 数组
  • 可选 使用一个 virtualFields 字段

待办事项

  • 单元测试

许可证

MIT 许可证 (MIT)

版权所有 (c) 2014 Jose Diaz-Gonzalez

特此授予任何获得本软件及其相关文档文件(“软件”)副本的任何人免费许可,用于在不加限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件的副本,并允许向获得软件的人提供用于执行此操作的权利,但受以下条件的约束:

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,没有任何形式的保证,明示或暗示,包括但不限于适销性、特定用途的适用性和非侵权性。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论源于合同、侵权或其他原因,是否因软件或其使用或其他交易而产生。