Доктрина внутреннее соединение - PullRequest
1 голос
/ 03 апреля 2012

Это Doctrine-код в ZF-приложении:

$rowset = Doctrine_Query::create()
    ->select("cu.clientuser, cu.usertitle, u.firstname")
    ->from('Model_Db_Tblclientuser cu')
    ->innerJoin('cu.Tblusers u')
    ->whereIn('cu.clientid', (int)$clientid)
   ->execute();


foreach ($rowset as $row) {             
    $list[] = array(
        'title' => $row->usertitle,
        'firstname' => $row->firstname
    );
}

Сгенерирован следующий запрос:

SELECT 
    t.clientuser AS t__clientuser, 
    t.usertitle AS t__usertitle, 
    t2.userid AS t2__userid, 
    t2.firstname AS t2__firstname 
FROM 
    tblclientuser t INNER JOIN tblusers t2 ON t.userid = t2.userid 
WHERE 
   (t.clientid IN (1))

, скопированный в phpmyadmin, он даетидеальный результат.Но когда я запускаю ZF-приложение, оно идет не так ...

Для поля "clientuser" все работает хорошо.Но для поля "имя" оно идет не так ...

Unknown record property / related component "firstname"
on "Model_Db_Tblclientuser"

Что я делаю не так?

Очень странная вещь, на которую стоит обратить внимание: если я сделаю

foreach ($rowset as $row) {             
    var_dump($row);
}

выводит данные и из всех других таблиц, таблиц, которые не имеют никакого значения ...

Ответы [ 3 ]

0 голосов
/ 03 апреля 2012

Вы пытались выполнить массивный выбор вместо пользовательского выбора?

->select("cu.*, u.*")

Или, возможно, удалить выбор.Я знаю, что это не решение, и (от пользователя доктрины в Symfony) все кажется нормальным в вашем коде.Используете ли вы 1.2.4?

ps: "сохраните ваш браузер, не var_dump объект doxrine 1.x":)

0 голосов
/ 22 апреля 2014

Я понимаю, что это старый вопрос, но если кто-то сталкивается с этой проблемой, я считаю, что она связана с аналогичным опытом, с которым я столкнулся.

Пожалуйста, посмотрите решение здесь: Ошибка Doctrine Query Builder

0 голосов
/ 03 апреля 2012

Мне кажется, что я столкнулся с той же проблемой некоторое время назад и решил ее, выбрав идентификатор в соединении.

Попробуйте добавить ..

->select("cu.clientuser, cu.usertitle, u.id, u.firstname")

Или какой бы ни был ключ соединенияи посмотрим, разрешит ли это это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...