Ben dernek tabloda bazı ekstra alanları olan bir çok-çok ilişkisi bazı ekstra veri devam etmek istiyveyauz. Örneğiçinde, ben bir kullanıcı böyle 'üyesi', 'moderatör', 'yönetici' gibi ben de o / o ağına katıldı takip etmek istiyveyaum gibi bir ağ içiçindede ne rol takip etmek istiyveyaum. Şimdi ne arıyveyaum Doktriçindeiçindei kullanarak bu ekstra alanları almak içiçinde etkili bir yoldur. Tipik, çok basitleştirilmiş olsa da, DQL-sveyagu şöyle görünebilir:
// fiçinded.netwveyak.by.slug
Doctriçindee_Query::create()
->select('*')
->from('Netwveyak n')
->leftJoiçinde('n.Members u')
->nerede('n.slug = ?');
So, given that I have a User from the Members relation, is there any way I can "backtrack" içindeto the NetwveyakMembers relation ve fetch the extra fields? p>
If not, how do I re-arrange my schema to enable me to do this efficiently?
(Yani ben üye ben başladı ağ bulmak ve rolünü ve member_siçindece alanına almak içiçinde sahip olduğu tüm ağlar üzeriçindede yiçindeeleme yapmak istemiyveyaum).
Code illustration of my problem:
$netwveyakTable = Doctriçindee::getTable('Netwveyak');
$netwveyak = $netwveyakTable->executeOne('fiçinded.netwveyak.by.slug', $slug);
$members = $netwveyak->Members;
fveyaeach($members as $member) {
// How do I access the fields içinde the NetwveyaksMember association?
}
Şema aşağıda:
User:
tableName: users
columns:
user_id:
name: user_id as userId
type: içindeteger(8)
unsigned: 1
primary: true
autoiçindecrement: true
username:
type: striçindeg(30)
notnull: true
unique: true
relations:
Netwveyaks:
class: Netwveyak
local: user_id
fveyaeign: netwveyak_id
refClass: NetwveyakMembers
type: many
Netwveyak:
tableName: netwveyaks
actAs:
Sluggable:
unique: true
fields: [name]
canUpdate: true
Timestampable:
columns:
id:
type: içindeteger(8)
unsigned: 1
primary: true
autoiçindecrement: true
name:
type: striçindeg(64)
notnull: true
relations:
Members:
class: User
type: many
refClass: NetwveyakMembers
local: netwveyak_id
fveyaeign: user_id
fveyaeignAlias: Netwveyaks
fveyaeignType: many
NetwveyakMembers:
actAs:
Timestampable:
created:
name: member_siçindece as memberSiçindece
type: timestamp
updated:
disabled: true
columns:
netwveyakId:
name: netwveyak_id as netwveyakId
type: içindeteger(8)
unsigned: 1
primary: true
userId:
name: user_id as userId
type: içindeteger(8)
unsigned: 1
primary: true
role:
type: enum
values: [member, moderatveya, admiçinde]
default: member
relations:
Netwveyak:
type: one
local: netwveyak_id
fveyaeign: id
Member:
class: User
type: one
local: user_id
fveyaeign: user_id