look this please
//--------------------------------------------------
CREATE TABLE IF NOT EXISTS `Developer` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(30) CHARACTER SET utf8 NOT NULL,
`Surname` varchar(30) CHARACTER SET utf8 NOT NULL,
`Password` varchar(11) CHARACTER SET utf8 NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
INSERT INTO `Developer` (`ID`, `Name`, `Surname`, `Password`) VALUES
(1, 'Mario', 'Verdi', 'mario'),
(2, 'Franco', 'Rossi', 'franco'),
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `WorkSpace` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`URL` varchar(100) CHARACTER SET utf8 NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
INSERT INTO `WorkSpace` (`ID`, `URL`) VALUES
(1, 'uno'),
(2, 'due');
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `WorkSpaceDeveloper` (
`IDDeveloper` int(11) NOT NULL COMMENT 'chiave esterna Developer -
relazione molti a molti',
`IDWorkSpace` int(11) NOT NULL COMMENT 'chiave esterna WorkSpace -
relazione molti a molti',
KEY `IDDeveloper` (`IDDeveloper`,`IDWorkSpace`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Tabella per relazione
molti a molti tra Developer e WorkSpac';
INSERT INTO `WorkSpaceDeveloper` (`IDDeveloper`, `IDWorkSpace`) VALUES
(1, 1),
(1, 2),
(2, 2);
//-------------------------------------------------------------------------------------------------------------
index.php
//--------------------------------------------------------------------------------------------------------------
<?php
class Developer {
public $ID;
public $Name;
public $Surname;
public $Password;
//MANY-TO-MANY
private $WorkSpaces;
public function __construct() {
$this->WorkSpaces = new Collection();
}
public function getWorkSpaces() {
return $this->WorkSpaces;
}
public function setWorkSpaces(Collection $WorkSpaces) {
$this->WorkSpaces = $WorkSpaces;
}
/*public function addWorkSpace(WorkSpace $WorkSpace) { //forse non
mettere il tipo
$WorkSpaces = $this->getWorkSpaces();
$WorkSpaces[] = $WorkSpace;
$this->setWorkSpaces($$WorkSpaces);
}*/
/*
per usarlo in index:
$post->getUsers()->add($user);
$this->con->save($post);
*/
}
class WorkSpace {
public $ID;
public $URL;
//MANY-TO-MANY
private $Developers;
public function __construct() {
$this->Developers = new Collection();
}
public function getDevelopers() {
return $this->Developers;
}
public function setDevelopers(Collection $Developers) {
$this->Developers = $Developers;
}
}
require 'outlet/Outlet.php';
Outlet::init(include 'outlet-config.php');
$outlet = Outlet::getInstance();
$outlet->createProxies();
$dev = $outlet->load('Developer', 1);
print_r( $listWorkSpace = $dev->getWorkSpaces('WHERE
{WorkSpace.StatusID} = 1') );
?>
//-------------------------------------------------------------------------------------------------------------------
outlet-config.php
<?php
return array(
'connection' => array(
'dsn' => 'mysql:host=localhost;dbname=CMS',
'username' => 'root',
'password' => 'rtmtt!10guido!',
'dialect' => 'mysql'
),
'proxies' => array(
'autoload' => true
),
'classes' => array(
'Developer' => array(
'table' => 'Developer',
'props' => array(
'ID' => array('ID', 'int', array('pk'=>true,
'autoIncrement'=>true)),
'Name'=> array('Name', 'varchar'),
'Surname'=> array('Surname', 'varchar'),
'Password'=> array('Password', 'varchar')
),
'associations' => array(
array('many-to-many', 'WorkSpace',
array('table'=>'WorkSpaceDeveloper','tableKeyLocal'=>'IDDeveloper','tableKeyForeign'=>'IDWorkSpace'))
)
),
'WorkSpace' => array(
'table' => 'WorkSpace',
'props' => array(
'ID' => array('ID', 'int', array('pk'=>true,
'autoIncrement'=>true)),
'URL'=> array('URL', 'varchar')
),
'associations' => array(
array('many-to-many', 'Developer',
array('table'=>'WorkSpaceDeveloper','tableKeyLocal'=>'IDWorkSpace','tableKeyForeign'=>'IDDeveloper'))
)
)
)
);
?>
//---------------------------------------------------------------------------------------
The collection returned is long! But without fields (URL -> a) (URL->
two) ...