Wojtek Majewski

Wojtek Majewski Freelancer,
Freelancing

Temat: Problem z kluczami obcymi w Doctrine 1.2 - generowane są...

Witam!

Napotkałem na bardzo dziwny bląd.
Opiszę sytuację.

Modele: Geo_Zip, Geo_Street, Geo_District
Wszystkie łączy relacja wiele do wielu.

Doctrine tworzy mi jeden niepotrebny i nieprawidłowy klucz obcy.

Jeśli ktoś czuje się na siłach, to proszę niech zerknie na kod, który wkleiłem tutaj: http://pastebin.com/ULBq6kci

Mi już ręce opadają, nigdy się w ciągu 3 lat pracy z Doctrine nie spotkałem z czymś takim.

Z góry dzięki za odpowiedzi, pozdrawiam!
Wojtek
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: Problem z kluczami obcymi w Doctrine 1.2 - generowane są...

hmm, ja bym to zrobil troszke inaczej:

1) hasPrimaryKeyColumn wtf? doctrine domyslnie tworzy PK id
2) hasForeignKeyColumn w modelach referencyjnych wtf?
3) zamiast $this->hasForeignKeyColumn('zip_id'); i tego drugiego
zrobil
$this->hasColumn('zip_id', 'integer', null, array('primary' => true)
$this->hasColumn('street_id', 'integer', null, array('primary' => true)

dzieki temu nie bedziesz mial niepotrzebnego pola id w modelu referenyjnym

4) zalozyl unikalne indeksy na pary np: (zip_id, street_id)
// chyba ze zakladasz ze moze byc wiecej przypisan jednego obiektu do drugiego obiektu, ale imho to bez sensu

5) zobaczyl co sie stanie :)
Wojtek Majewski

Wojtek Majewski Freelancer,
Freelancing

Temat: Problem z kluczami obcymi w Doctrine 1.2 - generowane są...

1) to prawda
2) to przeciez normalne klucze obce... a zlaczeniowe tabele to normalne tabele ktore maja referencje do innych tabel :-) masz racje co do niepotrzebnego id
3) sprawdzilem (bo lapie sie teraz wszystkiego) i niestety doctrine nadal tworzy niepotrzebny constraint "link__zips_to_streets_zip_id_geo__districts_id"
4) to swieza sprawa, na razie wymodelowalem tylko relacje
5) nadal to samo :-(
Maciej W.

Maciej W. Ruby on what?!

Temat: Problem z kluczami obcymi w Doctrine 1.2 - generowane są...


class Geo_District extends Lib_Doctrine_Record
{
//...
public function setUp() {
//..

$this->hasMany('Geo_Zip as zips', array(
'refClass' => 'Link_ZipToStreet',
'local' => 'zip_id',
'foreign' => 'street_id'
));
$this->hasMany('Geo_Street as streets', array(
'refClass' => 'Link_ZipToStreet',
'local' => 'district_id',
'foreign' => 'street_id'
));
}
}


No dobra, nie uzywam Doctrine na co dzien (w sumie to nie uzywam prawie wcale ;]) ale tutaj chyba cos nie wyglada fajnie?
Wojtek Majewski

Wojtek Majewski Freelancer,
Freelancing

Temat: Problem z kluczami obcymi w Doctrine 1.2 - generowane są...

tak, zmeczenie materiału :-)

juz odnalezione i poprawione, dzieki i sory za zawracanie glowy

Następna dyskusja:

Problem z rekordami i klucz...




Wyślij zaproszenie do