Pues te digo depende mucho ya de tu sistema, lo ideal es que tuvieras un ORM que manejara esas cosas por ti, que fuera algo así:
Código PHP:
Ver originalclass Noticia
{
private $_idNoticia;
private $_Categoria;
public function __construct($nIdNoticia = 0, Categoria $Categoria = null)
{
$this->_idNoticia = $nIdNoticia;
$this->_Categoria = $Categoria;
}
public function setCategoria(Categoria $Categoria)
{
$this->_Categoria = $Categoria;
return $this;
}
public function getCategoria()
{
return $this->_Categoria;
}
public function setIdNoticia($nIdNoticia)
{
$this->_idNoticia = $nIdNoticia;
return $this;
}
public function getIdNoticia($nIdNoticia)
{
return $this->_idNoticia;
}
}
class Categoria
{
private $_idCategoria;
private $_categoria;
public function __construct($nIdCategoria = 0, $sCategoria) {
$this->_idCategoria = $nIdCategoria;
$this->_categoria = $sCategoria;
}
public function setCategoria($sCategoria)
{
$this->_categoria = $sCategoria;
return $this;
}
public function getCategoria()
{
return $this->_categoria;
}
public function setIdCategoria($nIdCategoria)
{
$this->_idCategoria = $nIdCategoria;
return $this;
}
public function getIdCategoria()
{
return $this->_idCategoria;
}
public function __toString()
{
return $this->getCategoria();
}
}
Lo ideal es que tu capa de persistencia a la hora de hacer una consulta te traiga tu objeto listo, es decir internamente hace un JOIN con la tabla y trae la categoría relacionada y la inyecta a tu objeto, y ya en tu objeto solo haces un getCategoria() para obtener la categoría, así lo mantienes independiente y no metes código de proceso/persistencia en tus objetos.
Un ejemplo es algo así:
Código PHP:
Ver originalpublic function getNoticiaById($nIdNoticia)
{
$DB = $this->getDb();
$sQuery = "SELECT * FROM noticias AS n INNER JOIN categorias AS c ON n.id_categoria = c.id_categoria WHERE n.id_noticia=:id_noticia";
$Stmt = $DB->prepare($sQuery);
$Stmt->execute(array(':id_noticia' => $nIdNoticia));
$aData = $Stmt->fetch(PDO::FETCH_ASSOC);
$Noticia = new Noticia();
$Noticia->setIdNoticia($aData['id_noticia'])
->setCategoria(new Categoria($aData['id_categoria'], $aData['categoria']));
return $Noticia;
}
Claro todo eso lo puedes automatizar aún más y de eso se encarga un ORM de mapear tus objetos simples, y persistirlos de una manera automatizada usando un mapeo objeto relacional.
Espero con este ejemplo tengas una idea más clara de como hacerlo.
Saludos.