0

我有一个错误

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

{“孩子”,“孩子”} {“语料库”,“语料库”} {“人”,“人”}

4

2 回答 2

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',
        ),
    );
);

供参考,请参阅:

于 2017-09-03T11:57:39.957 回答
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;
于 2017-09-03T12:58:43.297 回答