У меня ошибка
SQLSTATE [42S02]: базовая таблица или представление не найдено: 1146 таблица
phpixie.persons не существует
при постановке в очередь таблицы «люди»:
public function getPerson($person_id)
{
return $this->components()->orm()->query('person')
->where('id', $person_id)
->findOne();
}
От документация:
По умолчанию ORM предполагает, что имя таблицы является множественным числом имени
модели, и что имя первичного ключа — «id».
Как я могу указать имя таблицы напрямую?
PS Или укажите список правил вроде EnglishPluralizationService:
{«child», «children»} {«corpus», «corpora»} {«person», «people»}
В зависимости от используемой версии PHPixie, существуют разные решения для указания имени таблицы для модели:
2.x
Если у вас уже есть Person
модель, вы можете указать имя таблицы, используя $table
поле:
class Person extends \PHPixie\ORM\Model
{
public $table = 'person';
}
Для справки смотрите:
3.x
Вы можете переопределить предположения по умолчанию в вашем файле конфигурации:
return array(
'models' => array(
'person' => array(
'table'=> 'persons',
),
);
);
Для справки смотрите:
Phpixie3:
<?php
// bundles/app/assets/config/orm.php
return [
'models' => [
'person' => [
'table' => 'people',
// if you want to change id field also:
'id' => 'pid',
],
],
];
Звоните с:
$builder->components()->orm()->query('person')->in(432)->findOne();
Должен стать
SELECT * FROM person WHERE id=432;
или, если вы также переопределите поле id:
SELECT * FROM person WHERE pid=432;