2014-12-15 1 views
0

모델 간의 관계를 쿼리하는 데 Phalcon을 사용하고 있습니다. 나는 다음과 같은 모델을 가지고 :모델 관계를 탐색 할 때 열이 모호하다는 것을 나타내는 Phalcon ORM

<?php 

class Client extends ModelBase 
{ 
    private $id; 
    private $code; 
    private $active; 

    public function initialize() 
    { 
    parent::initialize(); 

    $this->hasManyToMany(
     "id", 
     "ClientAddress", 
     "client_id", 
     "address_id", 
     "Address", 
     "id", 
     array("alias" => "addresses") 
    ); 

    public function getAddresses($params = null) { 
    return $this->getRelated("addresses", $params); 
    }   
} 


class Address extends ModelBase 
{ 
    private $id; 
    ....... 

<?php 

class ClientAddress extends ModelBase 
{ 
    private $id;  
    private $active; 

    public function initialize() 
    { 
    parent::initialize();            
    $this->belongsTo("client_id", "Client", "id", array(
     "alias" => "client" 
    )); 

    $this->belongsTo("address_id", "Address", "id", array(
     "alias" => "address" 
    )); 
    } 
} 

나는 아래의 오류 받고 있어요 :

$client = Client::findFirst(array(
    "conditions" => "id = ?1", 
    "bind" => array(1 => $current_client_id) 
)); 

    $addresses = $client->getAddresses(array(
    "conditions" => "id = ?1", 
    "bind" => array(1 => $id) 
)); 

왜 이런 일이 :

The column 'id' is ambiguous, when preparing: SELECT [Address].* FROM [Address] INNER JOIN [ClientAddress] ON [ClientAddress].[address_id] = [Address].[id] WHERE [ClientAddress].[client_id] = ?0 AND id = ?1

입니다이 오류를 생성하는 코드를? 관계를 제대로 설정하지 않았습니까? 나는 where 절에 테이블 이름을 접두어로 붙일 것이라고 생각했을 것입니다.

+0

의 동일한 열 이름이있을 때 다음과 같은 문제가 다른 절 또는 전혀 절을 사용할 때 모델이 제대로 작동합니까? – CodeMonkey

답변

1

나는 당신과 같은 문제가있었습니다. 나는

$client = Client::findFirst(array(
    "conditions" => "[ClientAddress].[id] = ?1", 
    "bind" => array(1 => $current_client_id) 
)); 

    $addresses = $client->getAddresses(array(
    "conditions" => "[Address].[id] = ?1", 
    "bind" => array(1 => $id) 
)); 

을 추가하여 고정 당신이 두 개의 서로 다른 MySQL의 테이블

+0

고마워. 내가 그 일을 끝내고, PHQL로 작성한 것 같아. 정말 바보 같은 버그, 여러 테이블에있는 id 컬럼을 갖는 것은 항상 일어날 것입니다. – Lock

+0

'FROM'테이블에 대한 별칭을 설정할 수없고 네임 스페이스를 사용할 때 이상한 모양이 나타나기 쉽습니다. – Ultranuke