我想知道是否可以配置一个实体来自动加载来自另一个实体的数据 . 防爆 .
/**
* accountsUsers
*
* @ORM\Table()
* @ORM\Entity
*/
class accountsUsers
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
public $id;
/**
* @var string
*
* @ORM\Column(name="userid",type="integer")
*/
public $userid;
/**
* @var string
*
* @ORM\Column(name="roleid",type="integer")
*/
public $roleid;
/**
* @var string
* admin,adviser,etc
* @ORM\Column(name="roleType", type="string", length=255)
*/
public $roleType;
/**
* @var string
*
* @ORM\Column(name="firstname", type="string", length=255)
*/
public $firstname;
/**
* @var string
*
* @ORM\Column(name="lastname", type="string", length=255)
*/
public $lastname;
/**
* @var string
*
* @ORM\Column(name="company", type="string", length=255)
*/
public $company;
/**
* @var string
*
* @ORM\Column(name="url", type="string", length=255)
*/
public $url;
/**
* @var string
*
* @ORM\Column(name="phone", type="string", length=255)
*/
public $phone;
/**
* @var string
*
* @ORM\Column(name="phone2", type="string", length=255)
*/
public $phone2;
/**
* @var string
*
* @ORM\Column(name="address", type="string", length=255)
*/
public $address;
/**
* @var string
*
* @ORM\Column(name="address2", type="string", length=255)
*/
public $address2;
/**
* @var string
*
* @ORM\Column(name="city", type="string", length=255)
*/
public $city;
/**
* @var string
*
* @ORM\Column(name="state", type="string", length=255)
*/
public $state;
/**
* @var string
*
* @ORM\Column(name="zip", type="string", length=255)
*/
public $zip;
/**
* @var string
*
* @ORM\Column(name="email", type="string", length=255)
*/
public $email;
/**
* @var string
*
* @ORM\Column(name="password", type="string", length=255)
*/
public $password;
}
和
/**
* accounts
*
* @ORM\Table()
* @ORM\Entity
*/
class accounts
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
public $id;
/**
* @var string
*
* @ORM\Column(name="partnerid", type="string", length=100)
*/
public $partnerid;
/**
* @var \DateTime
*
* @ORM\Column(name="subscribedate", type="date")
*/
public $subscribedate;
/**
* @var string
*
* @ORM\Column(name="connectionType", type="string", length=100)
*/
public $connectionType;
/**
* @var string
*
* @ORM\Column(name="recordkeeperTpaid", type="string", length=100)
*/
public $recordkeeperTpaid;
/**
* @var string
*
* @ORM\Column(name="recordkeeperAdviceProviderCd", type="string", length=100)
*/
public $recordkeeperAdviceProviderCd;
/**
* @var string
*
* @ORM\Column(name="recordkeeperUrl", type="string", length=200)
*/
public $recordkeeperUrl;
/**
* @var string
*
* @ORM\Column(name="recordkeeperUser", type="string", length=100)
*/
public $recordkeeperUser;
/**
* @var string
*
* @ORM\Column(name="recordkeeperPass", type="string", length=100)
*/
public $recordkeeperPass;
/**
* @var string
*
* @ORM\Column(name="recordkeeperPortfoliosAvailable", type="smallint")
*/
public $recordkeeperPortfoliosAvailable;
/**
* @var string
*
* @ORM\Column(name="recordkeeperRiskBasedFundsAvailable", type="smallint")
*/
public $recordkeeperRiskBasedFundsAvailable;
/**
* @var string
*
* @ORM\Column(name="investmentsMinScore", type="integer")
*/
public $investmentsMinScore;
/**
* @var string
*
* @ORM\Column(name="investmentsMaxScore", type="integer")
*/
public $investmentsMaxScore;
/**
* @var string
*
* @ORM\Column(name="ACAon", type="smallint")
*/
public $ACAon;
/**
* @var string
*
* @ORM\Column(name="MSTClientID", type="string", length = 100)
*/
public $MSTClientID;
}
当findby,findbyone等访问accountsUsers时,是否可以设置accountsUsers自动加载所有帐户数据 . 关系是accountsUsers.userid = accounts.id .
如果没有,我将如何在使用学说的连接中执行此操作 . 我知道如何使用纯原始sql来做到这一点 .
例如SELECT * FROM accounts a LEFT JOIN accountsUsers b ON a.id = b.userid
1 回答
仅使用注释不可能在一个查询中加载单独的实体(即使用JOIN) . 您必须在存储库中定义一个自定义查询,该查询通过DQL或
QueryBuilder
指示Doctrine与相关实体连接 .这对我来说也是一个很大的问题,但是在定义关联的注释中使用
fetch="EAGER"
实际上并不使用JOIN
来检索结果 - 它只是发出2个单独的查询来预先填充关系,这样它的第一次访问就不会触发延迟加载过程 .有关更多信息,另请参见this question .