CakePHP - Как получить данные из другой модели в контроллере - PullRequest
4 голосов
/ 09 февраля 2012

В настоящее время у меня есть 2 модели.Пользователи и Appbreak.У них есть ассоциации пользователей, имеет много приложений.Appbreaks принадлежит пользователям. В моем контроллере appbreak есть функция подтверждения, которая вызывается при нажатии кнопки со страницы просмотра.

В этой функции мне нужно обновить значение в таблице appbreak изначение в таблице пользователей.Я могу обновить значение в appbreak с помощью следующего:

$this->Appbreak->id = $id;
    $this->Appbreak->set('approve', 'Yes');
    $this->Appbreak->save();

Однако я не могу извлечь требуемое значение данных из таблицы пользователей.<- нужно сделать так, как мне нужно сделать некоторые вычисления, прежде чем возвращать вычисленное значение.</p>

Могу ли я получить данные из другой модели, используя метод запроса?Или мне нужно использовать метод поиска?Если я использую метод поиска, могу ли я обновить значения и сохранить их обратно в базу данных?

Ответы [ 2 ]

7 голосов
/ 09 февраля 2012

Вы можете использовать любое количество моделей в контроллере. Объявите массив «использует» в контроллере

<?php
class DemoController extends AppController{
    public $uses=array('Appbreak','User');
}
?>

Для получения данных из AppBreak модели используйте метод поиска
$this->AppBreak объект
Аналогично, чтобы получить данные для User, используйте метод поиска
$this->User объект

3 голосов
/ 09 февраля 2012

Используйте find (), чтобы получить ваши значения, а если вам нужно обновить значения, используйте save ().Например:

$this->Appbreak->Users->find('first', $params); 

(как описано здесь )

Для сохранения просто создайте массив с не менее соответствующим идентификатором записи.Включите все поля, которые вы хотите обновить, а затем вызовите метод сохранения в массиве следующим образом:

$data = array('id' => 10, 'title' => 'My new title');
// This will update Recipe with id 10
$this->Recipe->save($data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...