mapping – 具有多个joinColumns的Doctrine 2 ManyToOne
发布时间:2020-05-25 12:39:28 所属栏目:MsSql 来源:互联网
导读:我正在尝试根据product_item表中的productId和toolboxItemId选择product_item_sortorder表中的匹配行. 在适用于给定productId的普通SQL中: SELECT pi.*, pis.* FROM product_item piLEFT JOIN product_item_sortorder pis ON pi.productId =
|
我正在尝试根据product_item表中的productId和toolboxItemId选择product_item_sortorder表中的匹配行. 在适用于给定productId的普通SQL中: SELECT pi.*,pis.* FROM product_item pi
LEFT JOIN product_item_sortorder pis
ON pi.productId = pis.productId
AND pi.toolboxItemId = pis.toolboxItemId
WHERE pi.productId = 6
我为它写了DQL如下: $this->_em->createQuery(
'SELECT pi
FROM EntitiesProductItem pi
LEFT JOIN pi.sequence s
WHERE pi.product = ?1'
);
如果输出$query-> getSQL(),我会得到以下SQL: SELECT p0_.id AS id0,p0_.productId AS productId1,p0_.priceGroupId AS priceGroupId2,p0_.toolboxItemId AS toolboxItemId3,p0_.levelId AS levelId4,p0_.parentId AS parentId5,p0_.productId AS productId6,p0_.toolboxItemId AS toolboxItemId7 FROM product_item p0_ LEFT JOIN product_item_sortorder p1_ ON p0_.productId = p1_. AND p0_.toolboxItemId = p1_. WHERE p0_.productId = ? ORDER BY p0_.id ASC 如您所见,找不到referencedColumnNames: LEFT JOIN product_item_sortorder p1_ ON p0_.productId = p1_. AND p0_.toolboxItemId = p1_. product_item表的详细信息: +-----+-----------+---------------+ | id | productId | toolboxItemId | +-----+-----------+---------------+ | 467 | 1 | 3 | | 468 | 1 | 10 | | 469 | 1 | 20 | | 470 | 1 | 4 | | 471 | 1 | 10 | +-----+-----------+---------------+ product_item_sortorder表的详细信息: +-----+-----------+---------------+----------+ | id | productId | toolboxItemId | sequence | +-----+-----------+---------------+----------+ | 452 | 1 | 3 | 1 | | 457 | 1 | 4 | 6 | | 474 | 1 | 20 | 4 | +-----+-----------+---------------+----------+ ProductItem实体 <?php
/**
* @Entity(repositoryClass="RepositoriesProductItem")
* @Table(name="product_item")
*/
class ProductItem
{
...
/**
* @ManyToOne(targetEntity="ProductItemSortorder")
* @JoinColumns({
* @JoinColumn(name="productId",referencedColumnName="productId"),* @JoinColumn(name="toolboxItemId",referencedColumnName="toolboxItemId")
* })
*/
protected $sequence;
...
?>
ProductItemSortOrder实体 <?php
/**
* @Entity(repositoryClass="RepositoriesProductItemSortorder")
* @Table(name="product_item_sortorder")
*/
class ProductItemSortorder
{
...
/**
* @ManyToOne(targetEntity="Product")
* @JoinColumn(name="productId",referencedColumnName="id")
*/
protected $product;
/**
* @ManyToOne(targetEntity="ToolboxItem")
* @JoinColumn(name="toolboxItemId",referencedColumnName="id")
*/
protected $toolboxItem;
...
}
?>
解决方法检查此示例中的复合连接列https://github.com/doctrine/doctrine2/blob/2.0.6/tests/Doctrine/Tests/Models/Navigation/NavPhotos.php (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
