2015-08-27 2 views
1

Привет, я пытаюсь присоединиться к 3 таблицам в кодерификаторе доктрины. Я успешно присоединился к двум таблицам, но имею проблему с присоединением к третьей.Codeigniter и doctrine объединяются в три таблицы

Вот моя активная запись в кодеригенере. Я хочу, чтобы обработать этот запрос в доктриной

$query = $this->db->select('table1.name, table3.date') 
     ->from('table1') 
     ->join('table2', 'table2.id = table1.Uid') 
     ->join('table3', 'table3.id = table1.Rid') 
     ->where('table1.Uid', $Uid) 
     ->get(); 
    return $query->result(); 

Это моя доктрина строитель запрос к которой я соединить две таблицы успешно.

$qb = $this->em->createQueryBuilder(); 
    $query = $qb->select('t1, t2') 
     ->from('table1', 't1') 
     ->join('table2', 't2') 
     // ->join('table3', 't3') 
     ->where('t1.Uid = :Uid') 
     ->andwhere('t2.Yid = :Yid') 
     ->setParameters(array('Uid'=> $Uid, 'Yid' => $user_id)) 
     ->getQuery() 
     ->getResult(); 
+0

В Доктрине Соединить синтаксис идет как '> выберите ('t1.name', '') t2.name -> из ('table1', 't1') -> innerJoin ('t1', 'table2', 't2', 't2.id = t1.Uid') -> innerJoin ('t1', 'table3', 't3', 't3.id = t1 .Rid ') ' –

ответ

2

Попробуйте использовать следующий код, похоже, что ваш синтаксис неправильный.

$qb = $this->em->createQueryBuilder(); 
$query = $qb->select('t1.name', 't2.name') 
->from('table1', 't1') 
->leftJoin('t1', 'table2', 't2', 't2.id = t1.Uid') 
->leftJoin('t1', 'table3', 't3', 't3.id = t1.Rid') 
->where('t1.Uid = :Uid') 
->andwhere('t2.Yid = :Yid') 
->setParameters(array('Uid'=> $Uid, 'Yid' => $user_id)) 
->getQuery() 
->getResult() 

Более подробную информацию о Constructing a new QueryBuilder object

+0

Это не сработало, можете ли вы, пожалуйста, преобразовать мой запрос на кодирование в доктрину? –

Смежные вопросы