Yii model findByPk schlägt fehl

Von in php

Es war wie­der einer die­ser Tage, an dem man Stun­den damit ver­bringt, einen Feh­ler zu fin­den und die ein­zi­ge Hil­fe, die einem der Ser­ver anbie­tet, ist ein lapi­da­rer “inter­nal ser­ver error”. Dabei hat man schon alles ver­sucht, die Log-​Files durch­stö­bert, nach einem Parse-​Fehler gesucht, Code aus­kom­men­tiert um den Feh­ler ein­zu­gren­zen. Aber mit dem Model stimmt alles und da hat man doch eine ande­re Klas­se, die sieht genau­so aus. Und funk­tio­niert! Ein­fach nur zum Haa­re­rau­fen. Kaum ruft man über das Model einen Daten­satz mit dem pri­ma­ry Key auf, nip­pelt der Ser­ver ab.

Class::model()->findByPk($id);

Dabei ist der Feh­ler gar nicht schwer zu fin­den. Man darf ihn nur nicht im Quell­code suchen. Öff­net man näm­lich die Tabel­le der Daten­bank in z.B. phpMy­Ad­min, leuch­tet es einem schon freu­dig ent­ge­gen: Ent­we­der wur­de der Index über die id-​Spalte (oder eine ver­gleich­ba­re Spal­te) nicht auf uni­que gestellt, oder der pri­ma­ry Key fehlt über­haupt. Was sich ein­fach behe­ben lässt:

ALTER TABLE tabellenname ADD PRIMARY KEY(id);

Oder man klickt in phpMy­Ad­min auf den Pri­mär­schlüs­sel. Und dann soll­te auch Yii bei der Abfra­ge auf den pri­ma­ry key ein brauch­ba­res Ergeb­nis liefern.

Share on LinkedInShare on Redditshare on TumblrShare on StumbleUponDigg thisShare on FacebookGoogle+Tweet about this on TwitterEmail to someone