#php #cakephp
#php #cakephp
Вопрос:
Я просмотрел документацию по модели и не могу выяснить, как строить модели для 1 элемента …. например, я хочу, чтобы текущая модель пользователя имела addOpenId($openIdHash)
, но как мне это сделать, не передавая идентификатор пользователя функции?
Я ищу что-то вроде…
$user = $this->SobForm->get($userId);
$user->addOpenId($openIdHash);
Я говорю, похоже, что CakePHP построен вокруг моделей, которые не управляют ни одним элементом, поэтому контроллер мог бы иметь функцию «$ user-> getAllUsers()», тогда как для меня это не модель, это менеджер или помощник. Как я могу использовать модель в CakePHP, где она является единственной, поэтому она воздействует только на 1 элемент или содержит только функции, связанные с одним элементом, вместо функций, которые воздействуют на все элементы.
Есть ли какая-либо поддержка для такого рода функциональности или я должен создавать все это с нуля?
Комментарии:
1. Не могли бы вы объяснить это лучше? У меня не было слишком много…
2. Не совсем. Простой ответ: создайте модель, которая влияет только на один элемент. Это вы создаете свои модели. Создавайте их так, как вам нужно.
3. Должен ли я все это создавать сам? Хранятся ли данные для отдельного элемента в модели в любой момент или мне нужно добавить поддержку для этого?
4. Вы должны создать модель, которая, обращаясь к базе данных, влияет только на один ее элемент. Я не думаю, что для этого есть готовые материалы.
Ответ №1:
SobForm кажется мне ужасно знакомым… Я думаю, что то, что вы пытаетесь сделать, это рассматривать переменную $ user как класс, а это не так. Модель является классом, как и контроллер, но отдельная переменная, являющаяся результатом запроса к базе данных, не может быть классом. Что вы могли бы сделать, это что-то вроде $user = $this->OpenIdHelper->add($user,$openIdHash)
и заставить его вернуть новый массив с добавленным OpenID, тогда, я полагаю, вы будете делать $this->SobForm->save($user)
над ним? (P.S. вы работаете над проектом Summaries?) Вы также можете добавить свои собственные пользовательские функции для сохранения или обновления определенных данных в модели или вы можете сделать $this->SobForm->saveField('fieldname','data');
, чтобы просто сохранить одно поле данных вместо всего заново, если у вас сначала установлен идентификатор.