2015-01-15 5 views
0

Zend 2에서 select를 사용하여 조인해야합니다. 할 수있는 방법이 있습니까? 첫 번째 paremetr이 첫 번째 paremetr이 문자열 (테이블에 가입 한 이름)이 될 것으로 예상됩니다. 내가 관리 다른과 선택이Zend 2 select with select

$this->select(function (Select $select) use ($params) 

같은 것을 사용하지만 다시 작동하지 않습니다 (기능을 ($ 선택 선택))에 가입을 선택했다합니다.

+0

어쩌면이 도움이 될 것입니다 -> http://stackoverflow.com/questions/13626527/executing-multiple-join-with-expressions-on-zend-framework-2 – Crisp

+0

다음 예는 안내합니다 당신은 : https://gist.github.com/ralphschindler/3949548 또는 zend 방식을 사용하지 않고 쿼리 문자열과 execute를 생성하십시오. 만약 당신이 질의 방법과 일반적인 질의의 예를 원한다면 – dixromos98

+0

나는 질의 문자열을 생성하고 실행하는 방법을 알고있다.하지만 지금은 이것을 사용하고있다. 그러나 나는 변화시키고 객체를 사용하고 싶다. 나는 조인의 예제를 원한다. 당신이 그것을하는 방법을 안다면 zend 방식으로 선택하십시오. – WebDeveloper

답변

0

조인에는 두 개의 필수 매개 변수 인 테이블 이름과 조인 조건이 있습니다. 선택적으로 리턴 할 C 럼과 조인 유형 (기본값은 내부 조인)을 지정할 수도 있습니다. 다음은 게시물 작성자를 가져 오는 빠른 예입니다.

// First you need to create the select object 
$select = $sql->select(); 
$select->from('posts'); 

// then join to the people table 
$select->join('people', 'posts.author_id = people.id', array('first_name','last_name')); 
+0

나는 모든 것을 알고, 간단한 조인을 했어. 내 문제는 select와 조인하는 법이다. select * from YTable y inner join (select min (price), id는 Xtable 그룹의 id) x on y.id = x.id – WebDeveloper

+0

이 작업을 수행하는 유일한 방법은 자신의 select 개체를 만들고 리팩토링하는 것입니다. – ForrestLyman

0
Please add below code on top of model class 
    ------------------------------------------ 
    use Zend\Db\Sql\Expression; 
    use Zend\Db\Sql\Predicate; 
    use Zend\Db\Sql\Sql; 

    Then You can use this code 
    -------------------------- 
    $sql = new Sql($this->adapter); 
    $select = $sql->select(); 
    $select->from(array('nxyr' => 'node-x-y-relation')); 
    $join = new Expression("ni.node_id = nxyr.node_x_id and ni.node_type_id IN (" . $nodeTypeStr . ")"); 
    $join2 = new Expression("np.node_id = nxyr.node_x_id and np.node_type_id = 2"); 
    $join3 = new Expression("nc.node_id = nxyr.node_x_id and nc.node_type_id = 2"); 
    $select->join(array('nc' => 'node-class'), $join3, array('node_type_id'), 'Left'); 
    $select->join(array('ni' => 'node-instance'), $join, array('node_type_id'), 'Left'); 
    $select->join(array('np' => 'node-instance-property'), $join2, array('node_type_id'), 'Left'); 

    $select->where->equalTo('nxyr.node_y_id', $node_id); 
    $statement = $sql->prepareStatementForSqlObject($select); 

    $result = $statement->execute(); 
    $resultObj = new ResultSet(); 
    $nodeXYArr = $resultObj->initialize($result)->toArray();