2013-12-10 5 views
0

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

У меня есть таблица пользователей и пользователи hasmany rotas. Таблица Ротас выглядит

monday_am

monday_pm

tuesday_am

и т.д.

и если пользователь должен быть в на monday_pm, например, то, что поле будет иметь 1. В противном случае 0.

Я хочу, чтобы все пользователи, принадлежащие к определенному пространству, отменили регистрацию = 0 и - и вот где я «М, имеющих проблемы - у кого есть рота, где (например) tuesday_am = 1

Поэтому у меня есть код:

$options['conditions'] = array('User.room_id'=>$room_id, 'User.deregistered'=>0, 'User.request'=>0); 

$options['joins'] = array(
      array('table' => 'rotas', 
        'alias' => 'rota', 
        'type' => 'INNER', 
        'conditions' => array('rota.'.$todaysDay.'_'.$amPm => 1) 
        ) 
       ); 

$usersToday = $this->User->find('all', $options); 

Если я не попробовать присоединиться, то я получить хороший маленький список таких, как я ожидаю. Если я попробую присоединиться, я получаю 100 результатов, которые в основном дублируются!

Как получить только одну запись пользователя, у которого есть необходимые условия в таблице Users, а также таблица Rotas, и как это происходит, поскольку у меня есть так много результатов?!?

благодаря

+1

Есть ли причина, по которой вы не хотите определять свои отношения hasMany в своих моделях? Если вы это сделаете, вы можете просто добавить условия для соответствующей модели, и торт делает это для вас. http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html – Jage

+0

Вы имеете в виду $ options ['conditions'] = array ('User.room_id' => $ room_id, 'User.deregistered' => 0, 'User.request' => 0, 'rota.'. $ TodaysDay .'_ '. $ AmPm => 1); потому что это не сработало. в соответствии с http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#joining-tables hasmany relationship требует соединения? –

ответ

0

Если у вас есть столбец в вашей роте таблице с именем user_id, вы можете сделать свою модель Rota, как это:

class Rota extends Model 
{ 
    public $belongsTo = array('User'); 
} 

Затем в контроллере, вы можете запросить Rotas и получить пользователя из него.

+0

Hi Jage, спасибо за это, кажется, работает отлично! Хотя я имел отношение к отношениям, я никогда не думал о том, чтобы попробовать это как $ this-> Rota –

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