0

如果表的主键不是id列,有没有办法在fuelphp中使用ORM查找记录?

例如,listing_id是我的主键。而且我无法通过以下方式获得所需的结果:

$listing_id = Input::get('listing_id');
$entry = Model_ExampleData::find($listing_id);
4

2 回答 2

1

受保护的静态 $_primary_key

默认设置为array('id'),如果你使用另一个列名或多个主键,你需要设置这个属性。

class Model_Article extends Orm\Model
{
    protected static $_primary_key = array('aid');
}

主键必须是真正的主键:唯一且不变。也不要将它用于其他目的(例如一对一关系中的外键),因为 PK 无法更改,所以这不起作用。Orm 不会检查这一点,虽然乍一看它似乎有效:你会遇到麻烦。PK 不需要是 auto_increment(尽管是首选),您可以自己指定 PK,但仅限于第一次。一旦设置好了,就设置好了。

文档

于 2016-10-07T07:24:20.400 回答
0

为此,您有神奇的方法前缀:find_by_

通过添加此前缀,您可以告诉 FuelPHP 使用模型中的任意字段查找记录,无需修改模型配置,并且可以通过字段名称在它们之间拆分多个条件。

Model_ExampleData::find_by_FIELD($value)
Model_ExampleData::find_by_FIELD1_and_FIELD2($value1, $value2)
Model_ExampleData::find_all_by_FIELD($value)
Model_ExampleData::find_all_by_FIELD1_and_FIELD2($value1, $value2)
Model_ExampleData::count_by_FIELD($value1)
于 2017-02-02T10:39:31.353 回答