【问题标题】:Find a record where id is not the primary key in fuelphp在fuelphp中查找id不是主键的记录
【发布时间】:2016-10-07 05:25:41
【问题描述】:

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

例如,listing_id 是我的主键。而且我无法得到想要的结果:

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

【问题讨论】:

  • 启用数据库连接的分析器和分析,您会看到生成的 SQL 不正确,因为下面的答案。别忘了点赞哦!

标签: fuelphp fuelphp-orm


【解决方案1】:

受保护的静态 $_primary_key

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

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

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

Docs.

【讨论】:

    【解决方案2】:

    为此,您有神奇的方法前缀: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)
    

    【讨论】:

      猜你喜欢
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      • 2016-07-01
      • 1970-01-01
      • 2022-01-22
      • 2016-04-07
      相关资源
      最近更新 更多