承接 alexs/yii2-manytomany 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

alexs/yii2-manytomany

Composer 安装命令:

composer require alexs/yii2-manytomany

包简介

Many to many behaviors for Yii2 Framework.

README 文档

README

Many to many extension for Yii2<br/> For many to many relations, for example:

CREATE TABLE IF NOT EXISTS `category` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

CREATE TABLE IF NOT EXISTS `product` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

CREATE TABLE IF NOT EXISTS `category_product` (
  `category_id` int(4) NOT NULL,
  `product_id` int(4) NOT NULL,
  PRIMARY KEY (`category_id`,`product_id`),
  KEY `category_id` (`category_id`),
  KEY `product_id` (`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
<?php
namespace app\models;
use alexs\yii2manytomany\ManyToMany;
use yii\db\ActiveRecord;

class Category extends ActiveRecord
{
    // array of id's
    public $product_id = [];
    
    // ...

    public function rules() {
        return [
            ['product_id', 'each', 'rule'=>['integer']],
            // ...
        ];
    }

    public function behaviors() {
        return [
            [
                'class'=>ManyToMany::className(),
                'relations'=>[
                    'category_product'=>[
                        'category_id',
                        'product_id',
                    ],
                ],
            ],
            // ...
        ];
    }
}

With custom attributes and/or filters

<?php
namespace app\models;
use alexs\yii2manytomany\ManyToMany;
use yii\db\ActiveRecord;

class Category extends ActiveRecord
{
    // array of id's
    public $product_id = [];
    
    // ...

    public function rules() {
        return [
            ['product_id', 'each', 'rule'=>['integer']],
            // ...
        ];
    }

    public function behaviors() {
        return [
            [
                'class'=>ManyToMany::className(),
                'relations'=>[
                    'category_product'=>[
                        'category_id',
                        'product_id',
                        [
                            'pos', // existing attribute
                            'custom_attribute2'=>function($val) {
                                return $val + 9999;
                            },
                            'custom_attribute3'=>123,
                        ],
                        // filter empty values
                        // @see http://php.net/manual/en/function.array-filter.php
                        'filter'=>function(array $row) {
                            return trim($row[2]) !== '';
                        },
                    ],
                ],
            ],
            // ...
        ];
    }
}

The solution for relations in the same table, for example:

CREATE TABLE IF NOT EXISTS `category` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

CREATE TABLE IF NOT EXISTS `category_related` (
  `category_id` int(4) NOT NULL,
  `related_category_id` int(4) NOT NULL,
  PRIMARY KEY (`category_id`,`related_category_id`),
  KEY `category_id` (`category_id`),
  KEY `related_category_id` (`related_category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
<?php
namespace app\models;
use alexs\yii2manytomany\OwnManyToMany;
use yii\db\ActiveRecord;

class Category extends ActiveRecord
{
    // array of id's
    public $related_category_id = [];
    // ...

    public function rules() {
        return [
            ['related_category_id', 'each', 'rule'=>['integer']],
            // ...
        ];
    }

    public function behaviors() {
        return [
            [
                'class'=>OwnManyToMany::className(),
                'relations'=>[
                    'category_related'=>[
                        'category_id',
                        'related_category_id',
                    ],
                ],
            ],
            // ...
        ];
    }
}

统计信息

  • 总下载量: 112
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-3-Clause
  • 更新时间: 2017-09-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固