我有這3個entititesSymfony3類的繼承和db關係
Users.php
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Users
*
* @ORM\Table(name="users")
* @ORM\Entity(repositoryClass="AppBundle\Repository\UsersRepository")
*/
class Users
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="email", type="string", length=255, unique=true)
*/
private $email;
/**
* @var string
*
* @ORM\Column(name="password", type="string", length=20)
*/
private $password;
/**
* @var string
*
* @ORM\Column(name="phone", type="string", length=20)
*/
private $phone;
/**
* @var string
*
* @ORM\Column(name="type", type="string")
*/
private $type;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @var int
*
* @ORM\Column(name="feedback", type="integer")
*/
private $feedback;
/**
* @var string
*
* @ORM\Column(name="picture", type="blob")
*/
private $picture;
/**
* @var int
*
* @ORM\Column(name="rating", type="integer", length=255)
*/
private $rating;
/**
* @var string
*
* @ORM\Column(name="info", type="text")
*/
private $info;
/**
* @var \DateTime
*
* @ORM\Column(name="datecreated", type="datetime")
*/
private $datecreated;
/**
* @ORM\Column(name="is_active", type="boolean")
*/
private $isActive;
}
client.php
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* client
*
* @ORM\Table(name="client")
* @ORM\Entity(repositoryClass="AppBundle\Repository\clientRepository")
*/
class client extends Users
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var int
*
* @ORM\Column(name="numberofjobsposted", type="integer")
*/
private $numberofjobsposted;
/**
* @var string
*
* @ORM\Column(name="clienttype", type="string", length=255)
*/
private $clienttype;
}
sprovider.php
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* sprovider
*
* @ORM\Table(name="sprovider")
* @ORM\Entity(repositoryClass="AppBundle\Repository\sproviderRepository")
*/
class sprovider extends Users
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var array
*
* @ORM\Column(name="interestedin", type="simple_array")
*/
private $interestedin;
/**
* @var int
*
* @ORM\Column(name="numofsuccjobs", type="integer")
*/
private $numofsuccjobs;
/**
* @var string
*
* @ORM\Column(name="sprovidertype", type="string", length=255)
*/
private $sprovidertype;
/**
* @var string
*
* @ORM\Column(name="address", type="string", length=255)
*/
private $address;
/**
* @var string
*
* @ORM\Column(name="postcode", type="string", length=255)
*/
private $postcode;
}
所以我實現了extends
聲明提供了在MySQL中client
和sprovider
表的Users
性能。棒極了。我現在想要的是建立關係,以便當我添加一個新的client
例如,表Users
和client
在MySQL中添加一個新的用戶/客戶端,並且它們也具有相同的id
。
type()
Users
實體中的屬性我想對於我創建的用戶類型是可選的。示例:我創建了一個新的client
,並在MySQL的Users
表中將該類型設置爲「客戶端」。
我看了this,到目前爲止我認爲它必須是ManyToMany關係,但這對我來說很困惑。
如何使這些關係在實體中,然後如何在控制器中使用它們?如果可能的話,請舉個例子。
我想在這裏做什麼不會工作,因爲我使用2註冊表單,但只有一個登錄表單。表單檢查用戶表是否與登錄憑證相匹配,如果email和password與該用戶表中的條目相匹配,登錄表單將根據此條目的type()重定向在桌子裏。 –
我只是建立一個自定義用戶提供程序,並保持一個更標準的數據結構。 – DevDonkey
你是什麼意思的「自定義用戶提供商」 –