CakePHP Query building вопрос - PullRequest
       2

CakePHP Query building вопрос

0 голосов
/ 08 августа 2011

Я пытаюсь отобразить список имен друзей, т. Е .: имя и фамилия.

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

id , friend_a , friend_b , created , modified
1 , 1 , 3 , created , modified
1 , 1 , 7 , created , modified
1 , 4 , 1 , created , modified
1 , 2 , 6 , created , modified

, где friend_a и friend_bfriends.

Тогда у меня есть Контроллер Friendships_Controller, с этим:

function get_my_friends(){
    $this->set('user', $this->passedArgs['user']   ); 

    $conditions = array(
        'OR' => array(
        array( "Friendship.friend_a" => $this->passedArgs['user']),
        array( "Friendship.friend_b" => $this->passedArgs['user'])
        )
    );

    $this->set('friends', $this->Friendship->find('all',array('conditions'=>$conditions))  );   
}

И в представлении у меня есть это:

<?php foreach( $friends as $friend ): ?> ... 

И для каждого $ друга,Я хочу повторить имя этого друга, которое необходимо извлечь из таблицы пользователей.

ВОПРОС:

Как мне также интегрироваться в приведенный выше запрос контроллера:

SELECT first_name, last_name FROM users AS friend_name WHERE users.id = x

Где x представляет предложение ((если $ user == Friendship.friend_a, затем SELECT friend_b) else ((SELECT friend_a)) ")

Любая помощь приветствуется ...

1 Ответ

1 голос
/ 08 августа 2011

установить дружбу, принадлежащую пользователю (или любой модели, которую вы используете; не забудьте установить 2 из них, 1 для друга_а, 1 для друга_б);установите app_model в ActAs Containable;и в коде:

$this->set('friends', $this->Friendship->find('all',array(
    'conditions'=>$conditions)),
    'contain'=>array(
       'name_of_the_relationship_you_set_for_friend_a'=>array('fields'=>array('first_name', 'last_name')),
       'name_of_the_relationship_you_set_for_friend_b'=>array('fields'=>array('first_name', 'last_name'))
    )
  );

Если что-то из вышеперечисленного является новым для вас, найдите его в кулинарной книге.

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