Перейти к содержимому
Русский язык для Invision Community 5

Doctrine ORM findOneBy как будет в IPS?

Здравствуйте. Переношу потихоньку функционал движка на Doctrine ORM в виде модуля IPS. Там есть такая строчка:

 

$dbPlayer = $em->getRepository('StatsBundle:StatsGameplayerScored')->findOneBy(['name' => $p['name'], 'server' => $p['spoofedrealm']]);

 

Понятно, подгружается файл с функциями и используется метод выборки по имени и серверу. Как такое будет в IPS?

 

Правильно?

 

$dbPlayer = \IPS\sharedstats\Entity\StatsGameplayerScored::load(['name' => $p['name'], 'server' => $p['spoofedrealm']]);

Рекомендованные сообщения

$dbPlayer = \IPS\sharedstats\Entity\StatsGameplayerScored::constructFromData($db->select('*', \IPS\sharedstats\Entity\StatsGameplayerScored::$databaseTable, (['name=? AND server=?', $p['name'], $p['spoofedrealm']]))->first());

  • Автор
  • Автор

Понял, нужно подгрузить \IPS\Content\Controller а как? Мне в Task надо class _heroesScore extends \IPS\Task

Не отображается скриншот.

 

нужно подгрузить \IPS\Content\Controller а как?

На кой он там нужен?

  • Автор

У меня ошибка:

 

Error

Call to undefined method IPS\sharedstats\Entity\StatsGameplayerScored::constructFromData()

 

Что-то ну, скриншоты не грузит.

Что за класс \IPS\sharedstats\Entity\StatsGameplayerScored?

  • Автор

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

StatsGameplayerScored.php

Чтобы работало, нужно

class _StatsGameplayerScored extends \IPS\Patterns\ActiveRecord

  • Автор

Блин, точно. Спасибо.

  • Автор

Undefined offset: 0

 

Это я так понимаю не может выбрать тут что-то? (['name' => $p['name'], 'server' => $p['spoofedrealm']])

  • Автор

Ой, это же стандартный select, я уже разобрался как с ним работать, поэтому переделал, вроде правильно:

 

$dbPlayer = \IPS\sharedstats\Entity\StatsGameplayerScored::constructFromData($db->select('*', \IPS\sharedstats\Entity\StatsGameplayerScored::$databaseTable, (['name=? AND server=?', $p['name'], $p['spoofedrealm']]))->first());

Ой, это же стандартный select, я уже разобрался как с ним работать, поэтому переделал, вроде правильно:

 

Да это я скопировал с Вашего кода "where" и забыл исправил.

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.