CakePHP'de birden fazla grup bir kullanıcı olması gerekiyor

0 Cevap php

Merhaba benim web uygulaması için CakePHP'de ACL bileşeni çalışıyorum. Kendi ACL yapısını kullanarak kendi web sitesinde örnek gruplar ve kullanıcılar arasında bir ilişki için bir çok vardır. Bir grup içinde birden fazla kullanıcı olabilir iken bir kullanıcı, bir gruba ait olabilir.

Ama birden fazla gruba bir kaç kullanıcılara olması gereken bir durum var. Birçok bir çok olurdu ki ben, tablo yapısını değiştirmek zorunda kaldı. Ben de "groups_users" denilen bir ilişkisel varlık inşa. Şimdi tüm kontrolörleri, modelleri ve görüşlerini pişmiş var.

Ben ve kullanıcı grupları ekledik, ve işler iyi çalışıyor. Ben de üst sınıf, AppController içine bileşenleri ekledik. Ben de pişirme konsolunu kullanarak ACL tablolar ACOS, Aros ve AROs_ACOs yarattı.

Yani groups_users ben kullanıcıların ve grupların bir listesi var, görünümü eklemek. Ben, kullanıcıları ve grupları seçin, ve bir rekor teknik olarak benim groups_users tablo oluşturulmalıdır gönderebilirsiniz.

Ama benim için sürpriz, kayıtları garip aros_acos tabloya eklenir ediliyor. Ben kullanıcı, grup ve acl tablolar arasında bazı iç ilişki olduğuna inanıyorum. Ben bu tablolar arasında herhangi bir yabancı anahtar basamaklı olup olmadığını anlamaya çalıştı, ama hiçbir şey config / şema / dbacl.sql dosyasında belirtilmiştir.

Ben sorunun daha iyi anlaşılması için benim tablo yapısını yapıştırarak duyuyorum. Herhangi bir fikir büyük bir yardım olacaktır.

Teşekkürler

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

CREATE SCHEMA IF NOT EXISTS `acl_cake` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
USE `acl_cake` ;

-- -----------------------------------------------------
-- Table `acl_cake`.`users`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `acl_cake`.`users` (
  `id` INT(11) NOT NULL AUTO_INCREMENT ,
  `username` VARCHAR(255) NOT NULL ,
  `password` CHAR(40) NOT NULL ,
  `created` DATETIME NULL DEFAULT NULL ,
  `modified` DATETIME NULL DEFAULT NULL ,
  PRIMARY KEY (`id`) ,
  UNIQUE INDEX (`username` ASC) );


-- -----------------------------------------------------
-- Table `acl_cake`.`groups`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `acl_cake`.`groups` (
  `id` INT(11) NOT NULL AUTO_INCREMENT ,
  `name` VARCHAR(100) NOT NULL ,
  `created` DATETIME NULL DEFAULT NULL ,
  `modified` DATETIME NULL DEFAULT NULL ,
  PRIMARY KEY (`id`) );


-- -----------------------------------------------------
-- Table `acl_cake`.`posts`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `acl_cake`.`posts` (
  `id` INT(11) NOT NULL AUTO_INCREMENT ,
  `title` VARCHAR(255) NOT NULL ,
  `body` TEXT NULL DEFAULT NULL ,
  `created` DATETIME NULL DEFAULT NULL ,
  `modified` DATETIME NULL DEFAULT NULL ,
  `user_id` INT(11) NOT NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `fk_posts_users1` (`user_id` ASC) ,
  CONSTRAINT `fk_posts_users1`
    FOREIGN KEY (`user_id` )
    REFERENCES `acl_cake`.`users` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);


-- -----------------------------------------------------
-- Table `acl_cake`.`widgets`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `acl_cake`.`widgets` (
  `id` INT(11) NOT NULL AUTO_INCREMENT ,
  `name` VARCHAR(100) NOT NULL ,
  `part_no` VARCHAR(12) NULL DEFAULT NULL ,
  `quantity` INT(11) NULL DEFAULT NULL ,
  PRIMARY KEY (`id`) );


-- -----------------------------------------------------
-- Table `acl_cake`.`groups_users`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `acl_cake`.`groups_users` (
  `id` INT NOT NULL ,
  `user_id` INT(11) NOT NULL ,
  `group_id` INT(11) NOT NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `fk_permissions_users` (`user_id` ASC) ,
  INDEX `fk_permissions_groups1` (`group_id` ASC) ,
  CONSTRAINT `fk_permissions_users`
    FOREIGN KEY (`user_id` )
    REFERENCES `acl_cake`.`users` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_permissions_groups1`
    FOREIGN KEY (`group_id` )
    REFERENCES `acl_cake`.`groups` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;



SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

0 Cevap