0
我有多个表格,如 它有点复杂。从四个表格的组合中选择用户数据
1)正常用户表
User
id|username
0 |Tom
1 |Dad
2 |Bob
2),用于区域
SmallArea
id|name |bigarea
0 |blockA | 0(prefA)
1 |blockB | 0(prefA)
2 |blockC | 1(prefB)
3 |blockD | 1(prefB)
4 |blockE | 2(prefC)
3的两个表),用于区域的两个表
BigArea
id | name
0 | prefA
1 | prefB
2 | prefC
它意味着
BLOCKa中和blockB属于prefA
blockC和blockD属于的PrefB
β受体拮抗剂属于前缀C
4)用户和小面积的连接表
AreaConnection
user_id|smallarea
0(Tom) | 0(blockA)
0(Tom) | 1(blockB)
1(Dad) | 2(blockC)
1(Dad) | 3(blockD)
2(Bob) | 3(blockD)
它意味着
汤姆属于BLOCKa中和blockB
父亲属于blockC和块D
鲍勃属于blockD
然后 假设,我有BigArea键0(这意味着的PrefB)
我要选择属于属于bigarea命名的PrefB块的用户。
(的PrefB有blockC和blockD,
然后爸爸鲍伯是属于blockC或blockD,
所以爸爸鲍伯应选择)
我怎么会写在SQL这个模式? Doctrine2是更好,比如
SELECT u.id,u.username
FROM User u
INNER JOIN ??????
这些都是我的实体。
class User.php
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer",unique=true)
* @ORM\Id
*/
private $id;
/**
* @var string
*
* @ORM\Column(type="string")
*/
private $username;
/**
* @ORM\ManyToMany(targetEntity="Acme\UserBundle\Entity\SmallArea")
* @ORM\JoinTable(
* joinColumns={@ORM\JoinColumn(name="areaid", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="id", referencedColumnName="id")}
*)
*/
protected $SmallArea;
}
class BigArea
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer",unique=true)
* @ORM\Id
*/
private $id;
/**
* @var string
*
* @ORM\Column(type="string")
*/
private $label;
/**
*
* @ORM\OneToOne(targetEntity="Acme\UserBundle\Entity\SmallArea", mappedBy="prefecture")
*/
private $prefecture;
}
class SmallArea{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(type="string")
*/
private $label;
/**
*
* @ORM\ManyToOne(targetEntity="Acme\UserBundle\Entity\BigArea", inversedBy="prefecture*removethis : name of the variable in BigArea.php*")
* @ORM\JoinColumn(referencedColumnName="id",nullable=false)
*/
private $prefecture;
}
由于它工作正常SQL.But我麻烦与翻译这doctorine2格式,,没有人帮助吗?在Doctorine2 AreaConnection表concealed.User和SmallArea实体做出这个自动。 – whitebear
为您必须提供您的映射 –
我添加了我的实体编辑 – whitebear