[英]Symfony2 many to one get null parameter
我與“ login_log”,“ user_info”和“ user_account”具有多對一關系。 這是三個實體的摘要。
class UserInfo extends Entity {
/**
* @ORM\Column(name="user_id", type="integer")
* @ORM\Id
*/
protected $userId;
/**
* @ORM\Column(name="true_name", type="string", length=20)
*/
protected $trueName;
...
}
class UserAccount extends Entity {
/**
* @ORM\Column(name="user_id", type="integer")
* @ORM\Id
*/
protected $userId;
/**
* @ORM\Column(name="user_name", type="string", length=20, nullable=true)
*/
protected $userName;
...
}
class LoginLog extends Entity {
/**
* @ORM\Column(name="log_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $logId;
/**
* @ORM\ManyToOne(targetEntity="UserInfo")
* @ORM\JoinColumn(name="user_id", referencedColumnName="user_id")
*/
protected $userInfo;
/**
* @ORM\ManyToOne(targetEntity="UserAccount")
* @ORM\JoinColumn(name="user_id", referencedColumnName="user_id")
*/
protected $userAccount;
/**
* @ORM\Column(name="user_id", type="integer")
*/
protected $userId;
...
}
當我想添加登錄日志時:
$log = new LoginLog();
$log->setUserId(11);
$em->persist($log);
$em->flush();
但是在symfony profiler中,我得到了這些查詢:
INSERT INTO login_log (user_id) VALUES(?)
Parameters: { 1: null}
為什么第一個參數為空!
這沒有意義:
/**
* @ORM\ManyToOne(targetEntity="UserAccount")
* @ORM\JoinColumn(name="user_id", referencedColumnName="user_id")
*/
protected $userAccount;
/**
* @ORM\Column(name="user_id", type="integer")
*/
protected $userId;
它們都使用相同的列名,擺脫了userId屬性,並對userAccount使用了setter。
現在,您要設置一件事,而在進行查詢時,該學說會嚇跑,而使用另一件事。
明白我的意思嗎?
$log = new LoginLog();
$log->setUserAccount($user); // $user beeing an actual user, not an ID
$em->persist($log);
$em->flush();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.