Używam Yii CActiveRecord A -> z ("B") -> metoda findAll (), gdzie jedna z kolumn hte jest wspólna z A i B, a ta kolumna jest również częścią warunku.
Teraz problem polega na tym, że wykonuję gobłąd SQL, ponieważ mySQL nie wie, czy chcę odwołać się do A.column lub B.column. Przeglądałem wykonane zapytanie i wygląda na to, że tabela nazw yii jest wykonywana jako „t”, więc dopisałem nazwę „t” .column w warunku i wszystko działało dobrze.
Moje pytanie brzmi, czy ten rodzaj kodu jest odpowiedni tam, gdzie używam warunku jako
„CURDATE () <= date
I t
.removed
=: usunięty AND ispublic
= 1 AND isopen
= 1 ”
podczas gdy nie odnoszę się do „t” w zapytaniu. Yii samodzielnie zmienia nazwę tabeli. Daj mi znać, jeśli wydaje się to być dobrą praktyką kodowania lub jeśli jest lepszy sposób na to.
dzięki.
Odpowiedzi:
1 dla odpowiedzi № 1Gdy nie używasz „with ()”, możesz pisaćTwój warunek bez dołączania aliasu „t” z nazwą kolumny, ale gdy użyjesz „with ()” do znalezienia danych relacji, musisz dodać alias „t” z podstawowym warunkiem modelu. Jeśli ich nie ma wspólnej kolumny z relacjami, możesz uniknąć aliasu do modelu podstawowego.
Domyślne wartości Yii dodają alias do modelu podstawowego „t”, więc należy użyć „t” z nazwami kolumn modelu podstawowego.