我有错误
当队列'人'时,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 :(得分: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;