如何在PHPixie中为模型指定数据库表名?

时间:2017-09-03 11:22:11

标签: php phpixie

我有错误

  

SQLSTATE [42S02]:找不到基表或视图:1146表   'phpixie.persons'不存在

当队列'人'时,

public function getPerson($person_id)
{
    return $this->components()->orm()->query('person')
        ->where('id', $person_id)
        ->findOne();
}

来自documentation

  

默认情况下,ORM假定表名是名称的复数   模型的名称,主键的名称是'id'。

如何直接指定表名?

PS或指定类似EnglishPluralizationService的规则列表:

  

{“child”,“children”} {“corpus”,“corpora”} {“person”,“people”}

2 个答案:

答案 0 :(得分:2)

根据您使用的PHPixie版本,可以使用不同的解决方案来指定模型的表名:

2.x

假设您已有Person模型,可以使用$table字段指定表名:

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

供参考,见:

3.x

您可以覆盖配置文件中的默认假设:

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

供参考,见:

答案 1 :(得分:1)

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;