簡體   English   中英

Doctrine Native SQL列與映射器中的另一列沖突

[英]Doctrine Native SQL column conflicts with another column in the mapper

我遇到了一個問題,使本機查詢映射到聯接的表中有一些列,其中列名是來自不同表的相同名稱。 出於理智,這幾乎就是表格的外觀。

Addresses
    id
    latitude:float
    longitude:float
    street:string

Properties
    id:int
    latitude:float
    longitude:float
    address_id:int
    name:string


   <?php 

            $rsm = new ResultSetMappingBuilder($this->_em);
            $rsm->addRootEntityFromClassMetadata('MatrixBundle:CombinedListing', 'cl');
            $rsm->addJoinedEntityFromClassMetadata('MatrixBundle:Address', 'a', 'cl', 'addresses', array('id' => 'address_id'));

            $qb = $this->_em->createNativeQuery("
                SELECT cl, 3959
                 * acos(cos(radians($lat))
                 * cos(radians(cl.latitude))
                 * cos(radians(cl.longitude) - radians($lng))
                 + sin(radians($lat)) * sin(radians(cl.latitude)))
                 AS distance
                 FROM combined_listings as cl 
                 JOIN addresses as a on a.id = cl.address_id
                 WHERE a.state = :state
                 AND a.city = :city
                 ORDER BY distance $order
                 LIMIT $offSet, $max
                 ", $rsm);
            $qb->setParameters(["state" => $state, "city" => $city]);


            return $qb->getResult();

我得到的錯誤是

列“緯度”與映射器中的另一列沖突。

我一直在尋找答案,解決方案或解決方法。 我很少在原則中使用本機查詢,但DQL不支持acos()。 還有其他人遇到過這個問題嗎?

我的好友說,他看到了我很久以前問的一個問題。 我檢查了一下,發現沒有人回答。 這個問題的答案是您必須使用擴展名。 特別是這些。 https://github.com/beberlei/DoctrineExtensions/tree/master/src/Query/Mysql

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM