Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: SQL Query bulider dla Kohana
Forum PHP.pl > Inne > Oceny
gothye
Witam
Zmieniłem nie co bulider w kohana 3.x chciałbym abyście go ocenili link .
Dlaczego zmieniłem ? Ostatnio wykorzystuje w projektach więcej niż jedną bazę danych i chiałem aby przy wykonywanie zapytań do bazy wyglądało np :
  1. // zapis
  2. $this->db('system')->table('lang_var')->data(
  3. 'name' => $name ,
  4. 'value' => $value ,
  5. 'lang' => $lang ,
  6. )->save();
  7.  
  8. // select jednego rekordu
  9. return $this->db('photos_1')->select()->from('photos')->where('user_id','=',$user_id)->find();
  10.  
  11. // uaktualnienie
  12. $this->db('system')->table('lang_var')->data(
  13. 'name' => $name ,
  14. 'value' => $value ,
  15. 'lang' => $lang ,
  16. )->update();


jest jeszcze kilka rzeczy które chce w nim poprawić
np przy save() aby zwracał object a nie tablice jak teraz jest obecnie z last_insert_id i affected_rows
skowron-line
A dlaczego nie pobierasz innego configu questionmark.gif
  1. DB::instance('system')->select()->from()


I gdzie ty wpisałeś te metody bo nie mogę ich znaleźć w paczce ?
Czy jak się nie odwoła do bazy w builderze to pokaże error questionmark.gif czy wybierze z domyślnej bazy questionmark.gif
gothye
zapomniałem napisać że podzieliłem modele na model_db i model_cache ,
w modelu db jest funkcja :

  1. /**
  2.   * load database bulider query
  3.   **/
  4. public function db($db = 'default',$modulo = NULL)
  5. {
  6. if($modulo != NULL)
  7. {
  8. $db = $db.'_'.$modulo;
  9. }
  10.  
  11. return DB::instance($db);
  12. }


domyślnie jeśli nie wybierzeż bacy w $this->db() , pobierana jest baza z konfiguracji default ,
jeśli da innej konfiguracji niż default ,nie będzie podany parametr w configu np username , lub password do bazy ,zostanie on uzupełniony z konfiguracji default
skowron-line
Jak dla mnie bez użyteczne bo skoro wpisujesz sobie do pliku configu dane do połączenia z 2 bazą danych to dlaczego nie miałbyś wpisać 2 linijek dodatkowo i korzystać tylko z
  1. DB::instance($name);


No i jak dobrze zrozumiałem to zawsze musisz wrzucać odwołanie do
  1. $this->db()
co też jest raczej średnie
gothye
konieczne jest odwołanie do $this->db() , dlaczego nie chce uprościć configu ?

w ostatnim projekcie ,tylko da samych zdjęć użytkowników musiałem użyć 16 baz danych ,gdzie opcja % id_user (modulo) była konieczna ,
co prawda mógłbym tworzyć nazwę bazy w sposób 'photos_'.% (int) ,jednak wybrałem sposób jak podałem wyżej

odwołanie na początku do $this->db wg mnie daje jest leprze ponieważ pisząc zapytanie wiem do której bazy chce się odwołać ,bez konieczności patrzenia na koniec zapytania jaki to np. jest w standardowym kohana db::insert() ...
lukaskolista
Fakt inserty sa bardziej przejrzyste niz w standardowym query builderze
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.