Вопрос взаимодействия CakePHP с контроллером - PullRequest
0 голосов
/ 11 января 2010

У меня есть два отдельных сочетания контроллера, представления и базы данных: пользователи и задания. Пользователи содержат: id, name, jobid. Работа содержит: идентификатор, имя, заработная плата.

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

1.) $ This-> requestAction ('/ Jobs / getArray', array ('pass' => user ['jobid'])); Я слышал, что это не лучшая практика, особенно если у вас много взаимодействий между контроллерами, что я, вероятно, буду. Это также боль, чтобы попытаться выполнить всю отправку и получение таким образом.

2.) Приложение :: импорт коннектора заданий. $ Jobs = новый JobsConnector. $ Jobs-> GetArray ($ пользователя [ 'JobID']); Каждый раз, когда я пытаюсь сделать это, я получаю неопределенные ошибки. JobConnector :: Job не существует. Затем я получаю сообщение об ошибке в методе find (), который в противном случае работает.

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

Кто-то, пожалуйста, помогите!

Ответы [ 4 ]

0 голосов
/ 11 июля 2013

3 - loadModel

Если модель еще не используется в контроллере - loadModel может использоваться для ее доступности:

class FoosController extends AppController {

    function foo() {
        ...

        if (!isset($this->Job)) {
            $this->loadModel('Job');
        }
        $array = $this->Job->getArray();

        ...
    }
0 голосов
/ 11 января 2010

Если говорить о том, что говорит Селино, у вас настроены ассоциации? Возможно, User будет $hasOne = array( 'Job' )? Если это так, то в вашем UsersController вы можете получить доступ к модели Job как $this->User->Job->find( ... ).

Проверьте документацию ассоциации . Там есть несколько хороших примеров.

0 голосов
/ 12 января 2010

Я отвечу, если у вас есть веская причина НЕ ИМЕТЬ АССОЦИАЦИЙ между вашими двумя моделями. Если есть причина связать их, то некоторые из предыдущих ответов действительно верны.

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

Google для "Resuable элементы с requestAction", и вы получите статью о том, как ваши элементы извлекают свои собственные данные и соответственно кэшируют свои собственные данные.

Марк Стори сделал сообщение о проблемах с производительностью, и если вы не злоупотребляете им, и вы логически кешируете, то снижение производительности незначительно.

0 голосов
/ 11 января 2010

Вы пытались сделать это с табличными отношениями вместо действий запроса? Таким образом, вы получаете связанные данные из одной модели в ссылочной модели по всему вашему приложению.

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