Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Kohana] 3 ORM $_has_one , czy $_has_many ?
Forum PHP.pl > Forum > PHP > Frameworki
phpowiec84
Witam , mam pewien problem z połączeniem 2 tabel Mysql

mam tabelę session :

  1. CREATE TABLE IF NOT EXISTS `session` (
  2. `sid` varchar(32) NOT NULL,
  3. `user` int(10) UNSIGNED NOT NULL,
  4. `ip` varchar(40) NOT NULL,
  5. `browser` varchar(150) NOT NULL,
  6. `session_time` int(10) UNSIGNED NOT NULL,
  7. PRIMARY KEY (`sid`)
  8. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;


oraz users :

  1. CREATE TABLE IF NOT EXISTS `users` (
  2. `userid` int(10) NOT NULL AUTO_INCREMENT,
  3. `login` varchar(32) NOT NULL,
  4. `passwd` varchar(50) NOT NULL,
  5. `email` varchar(160) NOT NULL,
  6. `status` tinyint(1) UNSIGNED NOT NULL DEFAULT '1',
  7. UNIQUE KEY `userid` (`userid`)
  8. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=100 ;


chciałbym wykonać połączenie miedzy session.user a users.userid , w jaki sposób mogę tego dokonać za pomocą ORM w kohana 3 ?
nmts
Przede wszystkim jeśli to możliwe stosuj zalecane nazewnictwo, czyli:
- klucz główny: id
- klucz obcy: user_id
- każda tabela musi mieć klucz główny.
- nazwa tabeli - liczba mnoga,
- nazwa modelu - liczba pojedyńcza,

Jeśli się do tego nie stosujesz, co właśnie widzę, robisz sobie znacznie więcej pracy.

Masz, nie wiem czy jest poprawnie:
  1. // user.php
  2. protected $_has_one = array("session" => array("foreign_key" => "userid")); // połowa nie potrzebna gdy stosujesz nazewnictwo
  3. protected $_primary_key = "userid"; // nie potrzebne gdy stosujesz nazewnictwo
  4.  
  5. // session.php
  6. protected $_belongs_to = array("user" => array("foreign_key" => "user")); // połowa nie potrzebna gdy stosujesz nazewnictwo
  7. protected $_table_name = 'session'; // nie potrzebne gdy stosujesz nazewnictwo
  8. protected $_primary_key = "sid"; // nie potrzebne gdy stosujesz nazewnictwo
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.