Ben sfGuardUser model bir ilişkisi olan bir sfGuardUserProfile modeli oluşturduk. Sonra sfGuardUserProfile bir ilişkisi olan başka bir model tanımlar. Ben veritabanı oluşturmak zaman herhangi bir hata alamadım, ama benim eylemleri dosyasında sfGuardUserProfile verileri kaydetme çalıştığınızda bu hatayı alıyorum:
Sqlstate [23000]: Bütünlük kısıtlaması ihlali: 1452 bir alt satır eklemek veya güncellemek olamaz: Bir yabancı anahtar kısıtlaması başarısız
Benim schema.yml, ben 1-1 olarak ilişkileri tanımlama.
Ben bu başarısız olacağını neden emin değilim. Doktrin sadece zaten bir ilişkisi olan bir model, yeni bir ilişki eklemeyi desteklemez?
Edit Here's my schema.yml:
sfGuardUserProfile:
tableName: sf_guard_user_profile
columns:
sf_guard_user_id: { type: integer(4) }
email: { type: string(255) }
relations:
User:
class: sfGuardUser
type: one
foreignType: one
onDelete: CASCADE
local: sf_guard_user_id
foreign: id
foreignAlias: Profile
FacebookAccount:
tableName: facebook_account
columns:
user_id: { type: integer(4) }
page_id: { type: integer }
relations:
sfGuardUserProfile:
type: one
foreignType: one
class: sfGuardUserProfile
local: user_id
foreign: sf_guard_user_id
onDelete: CASCADE
foreignAlias: FacebookAccount
Ben bunu yaparken ben hatayla karşılaşırsanız:
$profile = $this->getUser()->getProfile();
$profile->setEmail('someone@somewhere.com');
$profile->save();
Oluşturulan SQL:
INSERT INTO sf_guard_user_profile (sf_guard_user_id, email) VALUES (?, ?) - (1, someone@somewhere.com)
Tam hata:
Sqlstate [23000]: Bütünlük kısıtlaması ihlali: 1452 bir alt satır eklemek veya güncellemek olamaz: Bir yabancı anahtar kısıtlaması başarısız (`site`.`sf_guard_user_profile`, CONSTRAINT `sf_guard_user_profile_sf_guard_user_id_facebook_account_user_id` FOREIGN KEY (`sf_guard_user_id`) REFERENCES `facebook_account` (`user_id`))