我有兩個實體:Doctrine2 QB - 如何選擇實體,其中OnetoOne實體不存在
class User extends BaseEntity {
/**
* @ORM\OneToOne(targetEntity="Profile", mappedBy="user", cascade={"persist", "remove"})
* @var Profile
*/
protected $profile;
}
class Profile extends BaseEntity {
/**
* @ORM\OneToOne(targetEntity="User", inversedBy="profile", cascade={"persist"})
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
* @var User
*/
protected $user;
}
我試圖做的是隻users
沒有任何簡歷誰選擇(如此沒有profile
行,user_id=:user_id
在profiles
表中)。但是,我不知道如何製作我的QueryBuilder。
首先,我試着像
//u as user
$query = $this->er->createQueryBuilder('u');
$query
->join('u.profile', 'p')
->where('u.profile = 1');
但返回A single-valued association path expression to an inverse side is not supported in DQL queries. Use an explicit join instead.
所以我想有什麼毛病我的關係簡單的東西?我試圖切換join()
爲leftJoin()
但它並沒有幫助...
那麼什麼是與此錯誤以及如何妥善狀況where()
告訴我學說只希望那裏沒有配置文件的用戶?
是啊,我發現這個論壇,但沒能檢查這個條件是因爲它一直在拋出我'Doctrine \ ORM \ Query \ QueryException:在DQL查詢中不支持單值關聯路徑表達式到反面。改用明確的連接。但我想這種情況是好的。謝謝。任何想法如何解決這個例外? – simPod 2015-02-06 15:24:53
它不起作用,因爲它如上所述拋出錯誤。 – 2017-12-05 11:06:11