Как указать имя таблицы базы данных для модели в PHPixie?

У меня ошибка

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»}

0

Решение

В зависимости от используемой версии PHPixie, существуют разные решения для указания имени таблицы для модели:

2.x

Если у вас уже есть Person модель, вы можете указать имя таблицы, используя $table поле:

class Person extends \PHPixie\ORM\Model
{
public $table = 'person';
}

Для справки смотрите:

3.x

Вы можете переопределить предположения по умолчанию в вашем файле конфигурации:

return array(
'models' => array(
'person' => array(
'table'=> 'persons',
),
);
);

Для справки смотрите:

2

Другие решения

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;
1

По вопросам рекламы [email protected]