ahmet/laravel-flag-system

向数据库添加旗帜并管理它们。

dev-master 2019-01-11 18:29 UTC

This package is auto-updated.

Last update: 2024-09-12 06:40:20 UTC


README

CircleCI Version Version

注意:项目尚未准备好发布!稳定版本1.0即将发布。

安装

使用以下命令将laravel-flag-system添加到composer.json中

$ composer require ahmetcelikezer/laravel-flag-system

如果使用Laravel 5.5或更高版本,Laravel包自动发现将自动添加此服务提供程序。

如果您使用Laravel 5.4或更早版本,必须手动添加提供程序。请按照以下步骤操作

  • 转到/config/app.php
  • 将ahmetcelikezer\laravelFlagSystem\FlagSystemServiceProvider::class添加到'providers'数组中

警告:默认表名是:"flags","flag_relations",如果您已经使用这些名称之一创建了任何表,您可以在包位置/src/config.php中更改表名。

接下来,该包需要创建自己的迁移,因此您必须使用以下Laravel的迁移命令

$ php artisan migrate

如何使用

让我们举一个例子来更好地解释:为了更容易理解这个包,我们有一个基于电子商务应用的假设项目。现在我们将学习如何在项目中使用这个包。

创建新的旗帜

创建新的旗帜就像创建规则或类别或任何基于您想象的东西一样。您的应用数据库中的任何表及其记录都可以有一个或多个旗帜。

单个创建

注意:所有旗帜名称都将自动在插入前转换为小写并右修剪。

我们想创建一个"discount"旗帜来与我们的产品一起使用,所以我们的代码将类似于这个

<?php

use ahmetcelikezer\laravelFlagSystem\classes\FlagSystem; // Required library

// Create a new FlagSystem object
$flagsystem = new FlagSystem;
$flagsystem->title = "discount";   // Define the flag name 
$flagsystem->create();             // Execute the create method

现在我们可以使用"discount"旗帜了,创建方法返回一个布尔变量,如果创建成功则返回true,否则返回false。

批量创建

您也可以一次创建多个旗帜。

现在我们想要创建3个新的旗帜来使用,它们将是"adult"、"videogame"、"phone"。

<?php

use ahmetcelikezer\laravelFlagSystem\classes\FlagSystem; // Required library

// Create a new FlagSystem object
$flagsystem = new FlagSystem;
$flagsystem->title = ["adult", "vidaogame", "phone"];   // Define the flag names as array
$flagsystem->create();                                  // Execute the create method

这就像单个创建,只是创建多个旗帜。

更新旗帜名称

我们总是可能犯错,并且可能在事后才发现... 幸运的是,对于任何事情来说,都不算太晚,如您所见,我们在创建"videogames"旗帜时犯了一个错误。它应该是"videogames",但我们只创建了"vidaogames"。别担心,我们可以更新它。

通过旗帜标题
<?php

use ahmetcelikezer\laravelFlagSystem\classes\FlagSystem; // Required library

// Create a new FlagSystem object
$flagsystem = new FlagSystem;
$flagsystem->flag   = "vidaogame"; // Old(Target) Flag Title
$flagsystem->title  = "videogame"; // New Flag Title
$flagsytem->updateFlag();
通过旗帜ID
<?php

use ahmetcelikezer\laravelFlagSystem\classes\FlagSystem; // Required library

// Create a new FlagSystem object
$flagsystem = new FlagSystem;
$flagsystem->id     = 3;            // Old(Target) Flag ID
$flagsystem->title  = "videogame";  // New Flag Title
$flagsytem->updateFlag();

删除旗帜

删除选定的旗帜,同时它首先运行disconnectAll方法。因此,在删除成功后,没有数据包含该旗帜。

您不能撤销此命令,删除旗帜后将无法使用并完全删除。

通过标题删除旗帜
<?php

use ahmetcelikezer\laravelFlagSystem\classes\FlagSystem; // Required library

// Create a new FlagSystem object
$flagsystem = new FlagSystem;
$flagsystem->flag = 'im useless flag';
$flagsystem->removeFlag(); // This will remove the flag
通过ID删除旗帜
<?php

use ahmetcelikezer\laravelFlagSystem\classes\FlagSystem; // Required library

// Create a new FlagSystem object
$flagsystem = new FlagSystem;
$flagsystem->id = 7;
$flagsystem->removeFlag(); // This will remove the flag

旗帜关系

旗帜关系是旗帜和用户表数据之间的管理。

将旗帜添加到数据

此方法将旗帜或旗帜添加到任何表中的任何数据。例如,我们将"discount"添加到"products"表上的产品记录中。

通过标题将旗帜添加到数据
<?php

use ahmetcelikezer\laravelFlagSystem\classes\FlagSystem; // Required library

// Create a new FlagSystem object
$flagsystem = new FlagSystem;

$flagsystem->flag   = "discount";   // Flag name to add
$flagsystem->target = "products";   // Target data table name
$flagsystem->dataID = 434;          // Target data id in table

$flagsystem->addFlag();             // This will add the flag to data
通过ID将旗帜添加到数据
<?php

use ahmetcelikezer\laravelFlagSystem\classes\FlagSystem; // Required library

// Create a new FlagSystem object
$flagsystem = new FlagSystem;

$flagsystem->id     = 1;            // Flag id to add
$flagsystem->target = "products";   // Target data table name
$flagsystem->dataID = 434;          // Target data id in table

$flagsystem->addFlag();             // This will add the flag to data
将多个旗帜添加到数据

您可以一次性添加多个标志为一个数组,就像上面的示例一样。区别在于,您不是以对象的形式定义参数,而是在数组中定义这些参数。在定义目标标志时,您可以在同一个数组中以id或title的形式定义它。

<?php
use ahmetcelikezer\laravelFlagSystem\classes\FlagSystem; // Required library

// Create a new FlagSystem object
$flagsystem = new FlagSystem;

$flagsystem->addFlag([
    ['id' => 1, 'target' => 'products', 'dataID' => 434],           // Add Flag by ID
    ['flag' => 'discount', 'target' => 'products', 'dataID' => 38], // Add Flag by Title
    ['flag' => 'new', 'target'=>'users', 'dataID'=>8],              // Add Flag by Title
]);

断开旗帜连接

断开标志,从包含该标志的每个数据中移除目标标志。但是标志不会被删除。您不需要重新创建标志。

例如,我们不想以任何折扣出售我们的产品,所以我们想清除“折扣”标志下的每个项目,我们不想删除“折扣”标志,因为我们可能希望在以后以折扣价出售任何产品。因此,我们可以使用 disconnectFlag 方法。

按标志标题断开连接
<?php

use ahmetcelikezer\laravelFlagSystem\classes\FlagSystem; // Required library

// Create a new FlagSystem object
$flagsystem = new FlagSystem;
$flagsystem->flag = "discount";     // Flag ID
$flagsytem->disconnectFlag("products");
按标志ID断开连接
<?php

use ahmetcelikezer\laravelFlagSystem\classes\FlagSystem; // Required library

// Create a new FlagSystem object
$flagsystem = new FlagSystem;
$flagsystem->id = 1;    // Flag ID
$flagsytem->disconnectFlag("products");

现在我们没有包含“折扣”标志的产品,但我们仍然保留“折扣”标志以供将来使用或用于其他表格。

按ID断开全部连接

从包含该标志的每个数据及其对应的表中断开标志。例如;我们有一个“new”标志,用于在“users”表中标记新用户,在“comments”表中标记新评论,在“products”表中标记最新产品。我们不希望在应用程序的任何数据上使用“new”标志。因此,此命令将删除与所有数据和所有表的全部关系。

<?php

use ahmetcelikezer\laravelFlagSystem\classes\FlagSystem; // Required library

// Create a new FlagSystem object
$flagsystem = new FlagSystem;
$flagsystem->id = 8;
$flagsystem->disconnectAll(); // This will disconnect the flag
按标题断开全部连接
<?php

use ahmetcelikezer\laravelFlagSystem\classes\FlagSystem; // Required library

// Create a new FlagSystem object
$flagsystem = new FlagSystem;
$flagsystem->flag = 'new';
$flagsystem->disconnectAll(); // This will disconnect the flag

控件

查询特定旗帜的数据

<?php

use ahmetcelikezer\laravelFlagSystem\classes\FlagSystem; // Required library

// Create a new FlagSystem object
$flagsystem = new FlagSystem;

$flagsystem->flag   = 'adult';      // Flag title to search
$flagsystem->target = 'products';   // Search target table
$flagsystem->dataID = 765;          // Search target record id

// hasFlag method returns boolean

if($flagsystem->hasFlag()){
    echo 'Product 765 has adult flag';
}

您也可以通过标志ID进行查询

<?php
// Create a new FlagSystem object
$flagsystem->id   = 8;      // Flag id to search