Sphinx: getting unknown property

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
bemulima
Сообщения: 207
Зарегистрирован: 2012.12.20, 09:41
Откуда: Курган

Sphinx: getting unknown property

Сообщение bemulima »

Вообщем, использую Sphinx, поле calendar_id зарегистрировано в индексе:

Код: Выделить всё

mysql> describe responseIndex;
+-------------------------+--------+------------+
| Field                   | Type   | Properties |
+-------------------------+--------+------------+
| id                      | bigint |            |
| firstname               | text   | indexed    |
| middlename              | text   | indexed    |
| lastname                | text   | indexed    |
| contacts                | text   | indexed    |
| employer_seeker_comment | text   | indexed    |
| resume_posts            | text   | indexed    |
| resume_experiences      | text   | indexed    |
| from_user_id            | uint   |            |
| to_user_id              | uint   |            |
| type                    | uint   |            |
| archive                 | bool   |            |
| dialog_id               | uint   |            |
| company_id              | uint   |            |
| calendar_id             | uint   |            |//<<<<<< Вот ОНО
| firstname               | string |            |
| middlename              | string |            |
| lastname                | string |            |
| gender                  | uint   |            |
| age                     | uint   |            |
| status                  | uint   |            |
| ad_id                   | uint   |            |
| updated_at              | uint   |            |
| created_at              | uint   |            |
| viewed_at               | uint   |            |
| action_date             | uint   |            |
| blacklist_id            | uint   |            |
| contacts                | string |            |
| employer_seeker_comment | string |            |
| resume_posts            | string |            |
| resume_experiences      | string |            |
| hidden                  | bool   |            |
| undo_status             | bool   |            |
| resume_ids              | mva    |            |
| vacancy_ids             | mva    |            |
| marker_ids              | mva    |            |
| event_time              | mva    |            |
| event_date              | mva    |            |
+-------------------------+--------+------------+
38 rows in set (0.00 sec)
в модель добавил в rules это поле:

Код: Выделить всё

public function rules()
    {
        return [
            [['id'], 'required'],
            [['id'], 'unique'],
            [['id', 'from_user_id', 'to_user_id', 'type', 'dialog_id', 'calendar_id', 'age', 'status', 'gender', 'ad_id', 'updated_at', 'viewed_at', 'company_id', 'action_date', 'blacklist_id'], 'integer'],
            [['firstname', 'middlename', 'lastname', 'gender', 'contacts', 'employer_seeker_comment', 'resume_posts', 'resume_experiences'], 'string'],
            [['archive', 'hidden', 'undo_status'], 'boolean'],
            [['resume_ids', 'vacancy_ids', 'marker_ids', 'event_time', 'event_date'], 'safe']
        ];
    }
всё стандартно. вызываю:

Код: Выделить всё

SphResponse::find()->where([
                'id' => $ids
            ])->all()
получаю, но этого поле нет, пытаюсь конкретно обращаться к этому поле, пишет getting unknown property
самое интересно, если запросить:

Код: Выделить всё

SphResponse::find()->where([
                'id' => $ids
            ])
                ->asArray()
                ->all()
или

Код: Выделить всё

Yii::$app->sphinx->createCommand('select * from response where id in(' . implode(',', $ids).')')->queryAll();
то в списке я вижу, как строку:

Код: Выделить всё

array (size=1)
  0 => 
    array (size=31)
      'id' => string '101' (length=3)
      'from_user_id' => string '3174' (length=4)
      'to_user_id' => string '86' (length=2)
      'type' => string '2' (length=1)
      'archive' => string '0' (length=1)
      'dialog_id' => string '101' (length=3)
      'company_id' => string '1' (length=1)
      'calendar_id' => string '101' (length=3) // <<<<<<<<<<<<<<<<<<<<<< Вот оно
      'firstname' => string 'Искра' (length=10)
      'middlename' => string 'Фёдоровна' (length=18)
      'lastname' => string 'Муравьёва' (length=18)
      'gender' => string '2' (length=1)
      'age' => string '58' (length=2)
      'status' => string '22' (length=2)
      'ad_id' => string '337' (length=3)
      'updated_at' => string '1620894558' (length=10)
      'created_at' => string '1619873638' (length=10)
      'viewed_at' => string '0' (length=1)
      'action_date' => string '1619827200' (length=10)
      'blacklist_id' => string '0' (length=1)
      'contacts' => string 'olesa84@inbox.ru, 5222196698, 8-800-350-4898' (length=44)
      'employer_seeker_comment' => string '' (length=0)
      'resume_posts' => string '.net разработчик,Мастер мастерской специальной техники и оборудования' (length=127)
      'resume_experiences' => string 'ОАО РечХозХоз-Жокей,ОАО РемИнжВосток-Водитель,ОАО ГорТелеАвто-Экономист,ООО Компания ИнжВостокМетиз-H-Чабан,ЗАО ГорСантехТяжЭкспедиция-Ковбой,ООО КазаньТехТверь-Герольд,ПАО Гор-Диджей,ОАО ИнжОрион-Печник' (length=380)
      'hidden' => string '0' (length=1)
      'undo_status' => string '1' (length=1)
      'resume_ids' => string '10967,10971' (length=11)
      'vacancy_ids' => string '2' (length=1)
      'marker_ids' => string '' (length=0)
      'event_time' => string '1621245600' (length=10)
      'event_date' => string '1621296000' (length=10)
Далее пробовал модель сгенерировать с помощью gii, и сгенерированном файле нету этого поле. Если добавить в Модели public $calendar_id;,
то записывает, как строка. Не могу понять, в чем дело :(
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Sphinx: getting unknown property

Сообщение yiijeka »

Возможно у вас стоит кэш enableSchemaCache в конфиге компонента db .

Если это так, тогда то, что вы руками делаете в базе данных не видно для Yii2 , нужно либо делать все изменения в базе данных через миграции, либо сбрасывать каждый раз кэш через консоль cache/flush-schema
Ответить