Проблема с функцией поиска CakePHP - Не ведет себя как нужно - возвращает дубликаты - PullRequest
0 голосов
/ 16 мая 2011

Прежде всего, спасибо за поиск.Я изучаю CakePHP и настраиваю приложение по мере обучения.Я столкнулся с проблемой, которую, похоже, не понимаю, как ее решить.

У меня есть контроллер статей со следующей функцией:

function getRelated(){
    $relatedarticles = $this->Article->find(
                        'all',
                        array(
                             'fields' => array(
                            'Article.title'
                            ),
                             'limit' => 4,
                             'order' => 'Article.id ASC',
                             'recursive' => 1,
                             'conditions' => array(
                            'Article.category_id =' => '1'
                             )
                             )
                        );

    if (!empty($this->params['requested'])) {
        return $relatedarticles;
    } else {
        $this->set(compact('relatedarticles'));
    }
}

У меня также есть элемент сследующий код, который я могу использовать в своем приложении:

<div id="articles_view_related">
    Related News
    <?php 
        $relatedarticles = $this->requestAction('/articles/getRelated');
        //debug($relatedarticles);
    ?>
    <ul>
        <?php
            foreach($relatedarticles as $relatedarticle){
        ?>
        <li>
            <?php
                echo $relatedarticle['Article']['title'];
            ?>
        </li>
        <?php
            }
        ?>
    </ul>

</div>

Как видно из кода, у меня установлено значение limit для 4, а для category_id - 1. По сути, все, что я ищудля этого нужно, чтобы CakePHP возвратил 4 заголовка статьи, где их category_id равен 1.

МОЯ ПРОБЛЕМА: ТОЛЬКО возвращается первая запись в базе данных с запрошенным category_id, но 4 раза .:

В основном:

Возвращает:

  • Новостная статья № 1
  • Новостная статья № 1
  • Новостная статья № 1
  • Новостиномер статьи 1

Когда мне нужно вернуть что-то вроде этого:

  • Статья новостей № 1
  • Статья новостей № 2
  • Новостная статья № 6
  • Новостная статья № 10

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

Большое спасибо,

Андре С.

ОБНОВЛЕНО ВЫХОДОМ ОТ ОТВЕТА CAKEPHP:

Array
(
[0] => Array
    (
        [Article] => Array
            (
                [title] => Djabraba recognized as the most underdeveloped island in the world here with us djabraba is here
                [id] => 1
            )

        [Attachment] => Array
            (
            )

        [Comment] => Array
            (
            )

    )

[1] => Array
    (
        [Article] => Array
            (
                [title] => Djabraba recognized as the most underdeveloped island in the world here with us djabraba is here
                [id] => 1
            )

        [Attachment] => Array
            (
            )

        [Comment] => Array
            (
            )

    )

[2] => Array
    (
        [Article] => Array
            (
                [title] => Djabraba recognized as the most underdeveloped island in the world here with us djabraba is here
                [id] => 1
            )

        [Attachment] => Array
            (
            )

        [Comment] => Array
            (
            )

    )

[3] => Array
    (
        [Article] => Array
            (
                [title] => Djabraba recognized as the most underdeveloped island in the world here with us djabraba is here
                [id] => 1
            )

        [Attachment] => Array
            (
            )

        [Comment] => Array
            (
            )

    )

)

1 Ответ

0 голосов
/ 16 мая 2011

Проблема была в каком-то плохом отношении, которое я пытаюсь понять:

В моем файле модели article.php есть следующее отношение:

var $belongsTo = array(
        'Category' => array(
            'className' => 'Category',
            'foreignKey' => 'category_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        ),
        'User' => array(
            'className' => 'User',
            'foreignKey' => 'user_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        )
    );

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

[решено] - СМОТРИТЕ КОММЕНТАРИЙ НИЖЕ ...

...