Проблема доступа к запросу присоединения к доктрине - PullRequest
0 голосов
/ 30 июня 2011

У меня есть две таблицы страниц и page_desc, и у меня есть отношение

$ this-> hasMany ('Model_PagesDesc as PageDesc', массив ('local' => 'id', 'foreign' => 'pages_id'));

У меня есть запрос

return Doctrine_Query::create()
                 ->select('m.*, d.*')
                 ->from('Model_Pages m')
                 ->leftJoin('m.PageDesc d')
                 ->execute();

СЕЙЧАС, КОГДА QUERY ВЫПОЛНЯЕТ.ПОСМОТРЕТЬ, КОГДА Я ПОПЫТАЮСЬ ПОЛУЧИТЬ ПОЛЕВОЕ ЗНАЧЕНИЕ SCEOND TABLE ВОЗВРАЩАЕТСЯ НЕКОТОРЫМ ИНТЕГРОМ ВМЕСТО НАСТОЯЩЕГО ЗНАЧЕНИЯ В ПОЛЕ

<?php echo $pages->PageDesc->content;?>

1 Ответ

1 голос
/ 30 июня 2011

Если вы используете hasMany, тогда Model_Pages::PagesDesc будет Doctrine_Collection, а не Model_PagesDesc экземпляром.Я не уверен, но я бы предположил, что поведение коллекции по умолчанию - возвращать count элементов в коллекции при преобразовании в строку, то есть целое число.Вам нужно либо перебрать коллекцию, либо получить определенный элемент.

<?php echo $pages->PageDesc->getFirst()->content; ?>

ИЛИ

<?php foreach($pages->PageDesc as $desc): ?>
  <?php echo $desc->content; ?>
<?php endforeach; ?>

Или вы можете написать собственную коллекцию для этой модели, которая возвращает конкатат полей content для каждого элемента в коллекции.

Однако кажется, что страница не должна иметь более одного описания, не так ли?Возможно, вы захотите использовать отношение 1-1 или просто сделать описание столбцом в вашей модели страницы.

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