Контроль Cakephp при вытягивании модельных ассоциаций

0

Я унаследовал проект, который использует Cakephp 2.0 и Angular для разных вещей, и я искал, как делать объединения и ассоциации моделей.

У меня есть модель, которая имеет ассоциации с таблицей пользователей, например

App::uses('AppModel', 'Model');

class Booking extends AppModel {

    public $belongsTo = array(
        'Trainer' => array(
            'className' => 'User',
            'foreignKey' => 'to_user'
        ),
        'Participant' => array(
            'className' => 'User',
            'foreignKey' => 'user'
        )
    );

}

Это работает. Однако у меня есть опасения по поводу скорости и безопасности всегда получать всю таблицу пользователей каждый раз, когда вы получаете доступ к бронированию. Большая часть данных передается угловым, а затем отображается через javascript, и я нашел несколько мест, когда программа передает результаты поиска модели непосредственно в угловое, а затем позволяет обрабатывать распространение этих данных. Я беспокоюсь, что если я добавлю в эти ассоциации, то где-то я теперь могу передать свою пользовательскую таблицу в javascript, который будет включать конфиденциальные данные.

Мне интересно, можно ли добавлять ассоциации во время выполнения с помощью вызова функции. например.

App::uses('AppModel', 'Model');

class Booking extends AppModel {

    public function getUserInfo(){
        $this->$belongsTo = array(
            'Trainer' => array(
                'className' => 'User',
                'foreignKey' => 'to_user'
            ),
            'Participant' => array(
                'className' => 'User',
                'foreignKey' => 'user'
            )
        );
    }

}

Затем в контроллере используйте:

$this->loadModel("Booking");
$this->Booking->getUserInfo();

Это направлено на то, чтобы вы контролировали, также связаны ли связанные таблицы.

Теги:
security
cakephp
cakephp-2.0

1 ответ

0
Лучший ответ

Вы можете создавать ассоциации на лету следующим образом,

App::uses('AppModel', 'Model');

class Booking extends AppModel {

    public function getUserInfo(){
    $this->bindModel(
        array('belongsTo' => array(
                'Trainer' => array(
                    'className' => 'User',
                'foreignKey' => 'to_user')),
            'Participant'=> array(
                'className' => 'User',
                    'foreignKey' => 'user' ) )
            );
    return $this->find('all');

    }
}
  • 0
    Пожалуйста, исправьте пробелы в ответе.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню