我有权利:
data=
和个人资料:
url = "http://imgup.net/upload"
data = {'utf8': '✓', 'authenticity_token': '<put your scraped token here>', '_method': 'put'}
f = open("dhs.jpg", "rb") # open in binary mode
files = {'image[image][]': f}
r = requests.post(url, files=files, data=data)
f.close()
print(r.json()["image_link"]
我想将CREATE TABLE `rights` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
UNIQUE INDEX `U_name` (`name`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
与CREATE TABLE `profile` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
UNIQUE INDEX `U_name` (`name`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
以及个人资料相关联:
profiles
所以我生成实体:
php apps / doctrine.php dev orm:generate-entities libs / --no-backup --extend =&#34; \学说\实体\ BaseEntity&#34;
这里出现了问题。 rights
和CREATE TABLE `profile_profile` (
`profile_id1` INT(10) UNSIGNED NOT NULL DEFAULT '0',
`profile_id2` INT(10) UNSIGNED NOT NULL DEFAULT '0',
PRIMARY KEY (`profile_id1`, `profile_id2`),
INDEX `I_profile_id2` (`profile_id2`),
CONSTRAINT `FK_profile_profile-profile-1` FOREIGN KEY (`profile_id1`) REFERENCES `profile` (`id`) ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT `FK_profile_profile-profile-2` FOREIGN KEY (`profile_id2`) REFERENCES `profile` (`id`) ON UPDATE CASCADE ON DELETE CASCADE
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
CREATE TABLE `profile_right` (
`profile_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
`right_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
PRIMARY KEY (`profile_id`, `right_id`),
INDEX `I_right_id` (`right_id`),
CONSTRAINT `FK_profile_right-profile` FOREIGN KEY (`profile_id`) REFERENCES `profile` (`id`) ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT `FK_profile_right-rights` FOREIGN KEY (`right_id`) REFERENCES `rights` (`id`) ON UPDATE CASCADE ON DELETE CASCADE
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
实体已创建,而Profile
和Rights
则未创建。那么如何使用它们?
答案 0 :(得分:2)
如果要在ManyToMany关系上访问加入实体,则需要将其分解为OneToMany,ManyToOne。
E.g。
简介 - OneToMany&lt; ProfileRight&gt; ManyToOne - 简介。
你是否应该是另一个问题。如果要在连接表上存储额外数据,仅需要执行此操作。
根据您所拥有的内容,获取个人资料的权利变得微不足道。对于您加载的任何个人资料,只需致电
$profile->getRights()
和doctrine将(假设您生成的实体映射是正确的)根据连接表透明地为您获取所有关联的权限实体。
同样,如果您向个人资料添加权利:
$right = new Right();
$profile->addRight($right);
Doctrine将透明地为您添加连接表条目。
答案 1 :(得分:2)
在学说中,连接表不由实体表示。
您可以在实体中找到@ORM\ManyToMany
,其中包含@ORM\JoinTable
以及有关您关联的所有信息。
这是连接表的表示,使用@Richard所说的getter和setter来访问它们。
在Associations mapping中获取更多信息(以查看所有类型的关联)和Working with associations(了解如何使用它们)文档的章节。
希望你对学说有很好的经验。
修改强>
在更多地查看您的UML之后,至少有一个关联不需要多对多(如第一个答案所述),但是如果它们确实在SQL中有连接表,那么您导入了通过逆向工程,它们肯定会与SQL中的一样(带连接表的多对多)。