查找id不是fuelphp中主键的记录

时间:2016-10-07 05:25:41

标签: fuelphp fuelphp-orm

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

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

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

2 个答案:

答案 0 :(得分:1)

protected static $ _primary_key

  

默认设置为array(' id'),如果您使用其他列名称或多个主键,则需要设置此属性。

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

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

Docs

答案 1 :(得分:0)

为此,你有神奇的方法前缀: find_by _

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

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)