在哪里可以了解更多abt在yaml和数据夹具中创建数据库标记。
我遵循了一个教程,他们创建了一个像这样的关系:在User和Car中的关系下。我的qn是为什么'车型:很多'在汽车里。我可以在用户中使用它(只是好奇)吗?
abt数据类型。不同的数据库有不同的数据库支我认为在MySQL(这里使用InnoDB)整数shld是tinyint(x),bigint(x),int(x)...或字符串shld是varchar而不是字符串?我在这里使用的并不严格吗?
options:
type: INNODB
collate: utf8_general_ci
charset: utf8
User:
columns:
id:
type: integer
primary: true
autoincrement: true
name: string(300)
email: string(300)
phone: string(9)
car_id: integer
relations:
Car:
local: car_id
foreign: id
Car:
columns:
id:
type: integer
primary: true
autoincrement: true
brand: string(300)
relations:
Users:
class: User
foreign: car_id
local: id
type: many
“在我的示例中,只需要指定外键存在的末尾的关系”,那将是什么?它们是指FK表(汽车)还是FK列(用户)?
我没看到TEXT数据类型,那是clob(Character Large OBject)吗? - iceangel89 0秒前[删除此评论]
什么是外国人?还有别名吗?
这将是长期的,我只想澄清Doctrine YAML Schema Files docs page中的一些代码示例。专注于关系部分 - >在//评论
User:
columns:
username:
type: string(255)
password:
type: string(255)
contact_id:
type: integer
relations:
Contact:
class: Contact // if the table is named Contact, class will be Contact also?
local: contact_id
foreign: id
foreignAlias: User // whats alias for?
foreignType: one // one contact ... to ...
type: one // one user?
Contact:
columns:
first_name:
type: string(255)
last_name:
type: string(255)
phone:
type: string(255)
email:
type: string(255)
address:
type: string(255)
relations:
User:
class: User
local: id
foreign: contact_id
foreignAlias: Contact
foreignType: one
type: one
关于many to many example,以下是什么意思?
attributes:
export: all
validate: true
tableName: group_table
refClass: GroupUser
答案 0 :(得分:1)
在哪里可以了解更多abt在yaml和数据夹具中创建数据库标记。
主题手册,“YAML schema files”和“Data Fixtures”章节。
我可以在用户中使用它(只是好奇)吗?
是的,但此部分将被称为foreignType
。这里有一个例子:
User:
columns:
id:
type: integer
primary: true
autoincrement: true
name: string(300)
email: string(300)
phone: string(9)
car_id: integer
relations:
Car:
local: car_id
foreign: id
foreignType: many
abt数据类型......
好吧,Doctrine列类型和数据库列类型“略有”不同。只需比较list of Doctrine column types,比如MySQL's one。
答案 1 :(得分:0)
我知道这是旧的,但这些是我发现令人困惑的事情,现在仍然如此。事实上,我并不是所有可能性的专家,这只是基于对我有用的东西。我认为你可能正在寻找多对多的关系,但我完全避免了对它们的Doctrine支持,而是明确地定义了我自己的关联表,所以我只使用一对多和一对一的关系
如UPDATE1中所述,您只在具有外键的末尾指定关系。
关于更新2:
类:联系用户yaml表示它有一个名为 Contact 的关系,它引用了 Contact 类。默认情况下,类名和表名是相同的; yaml模式只处理类名,但可以告诉它为给定的类使用不同的表名。
foreignAlias:用户从联系人到用户的关系的名称是“用户”。如上所述,没有任何称为“别名”,从用户到联系人的关系的名称是“联系人”,因为这是用户所在的关系列表中的名称。当然,如果你碰巧在同一个两个类之间有多个关系,那么这些默认关系命名就会崩溃;您需要能够提供与类名不同的显式关系名称。 relations 的名称很重要,因为您在DQL连接中使用它们。
foreignType:one A联系人(外方)有一个用户
类型:一个用户(本地方)有一个联系人。
请注意,此示例在明确显示相同关系的两侧时有点不寻常。通常,您只在包含外键的一侧(用户端)显示它。由于用户包含指向联系人的外键,因此“类型”只能是“一个”。但是foreignType可以是“很多”,表示许多用户可以指向给定的联系人,但在这种情况下,指定只有一个用户可以引用给定的联系人。
如果您将类型指定为“many”,我实际上并不知道会发生什么。实现这需要一个像多对多关系那样的额外关联表,而且我不会知道Doctrine是否会像多对多关系一样“自动”创建这样的表。对于我对Doctrine的使用,我避免了基于我不太了解的命名约定的隐式机制,因此我关闭了“detect_relations”并避免了多对多关系。