如果表的主键不是id
列,有没有办法在fuelphp中使用ORM查找记录?
例如,listing_id
是我的主键。而且我无法通过以下方式获得所需的结果:
$listing_id = Input::get('listing_id');
$entry = Model_ExampleData::find($listing_id);
如果表的主键不是id
列,有没有办法在fuelphp中使用ORM查找记录?
例如,listing_id
是我的主键。而且我无法通过以下方式获得所需的结果:
$listing_id = Input::get('listing_id');
$entry = Model_ExampleData::find($listing_id);
受保护的静态 $_primary_key
默认设置为array('id'),如果你使用另一个列名或多个主键,你需要设置这个属性。
class Model_Article extends Orm\Model
{
protected static $_primary_key = array('aid');
}
主键必须是真正的主键:唯一且不变。也不要将它用于其他目的(例如一对一关系中的外键),因为 PK 无法更改,所以这不起作用。Orm 不会检查这一点,虽然乍一看它似乎有效:你会遇到麻烦。PK 不需要是 auto_increment(尽管是首选),您可以自己指定 PK,但仅限于第一次。一旦设置好了,就设置好了。
文档。
为此,您有神奇的方法前缀: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)