FuelPHP ORM find(';all';)仅获取一行

FuelPHP ORM find(';all';)仅获取一行,php,fuelphp,fuelphp-orm,Php,Fuelphp,Fuelphp Orm,当我使用FuelPHP ORM使用find('ALL')获得所有结果时,它只返回一条记录 这是我的数据库。 表名ws_config。(无主键) 这是我的模型 class Model_Config extends Orm\Model { protected static $_table_name = 'config'; protected static $_primary_key = array();// no PK, need to set PK to empty array.

当我使用FuelPHP ORM使用find('ALL')获得所有结果时,它只返回一条记录

这是我的数据库。 表名ws_config。(无主键)

这是我的模型

class Model_Config extends Orm\Model 
{
    protected static $_table_name = 'config';
    protected static $_primary_key = array();// no PK, need to set PK to empty array.
}
这是我的控制器

class Controller_Account_Register extends \Controller_Basecontroller 
{
    public function action_index() 
    {
        $config = Model_Config::find('all');
        $output['config'] = $config;

        // call function below is in base controller. it is just load theme (this view page into main template) nothing special.
        return $this->generatePage('front/templates/account/register_v', $output);
    }
}
这是我的视图文件

foreach ($config as $row) {
    //print_r($row);
    echo $row->config_name;
    echo ' = ';
    echo $row->config_value;
    echo '<br>';
}
foreach($config as$row){
//打印(行);
echo$row->config_name;
回声“=”;
echo$row->config_值;
回声“
”; }
结果是公正的

站点名称=我的站点

如何从该数据库表中获取所有结果?或
如何在何处条件下获得多个结果?

FuelPHP ORM需要主键才能获得所有结果

没有PK你只能得到一个结果


呃…:(

这里的问题是,正如@vee所说,ORM希望您将主键分配给表。在ORM中,默认情况下,这只是一个名为“id”的列。如果您不指定PK,则会发生意外行为,例如

在表上定义主键后,应该解决此问题


最简单的方法是只添加一个自动递增的ID列,因为这是orm模型的默认值。

@trippino我认为它确实回答了这个问题,答案是,向表中添加一个PK。原因是水合过程使用主键作为索引值。当没有PK可用时,所有记录都将具有相同的属性相同的索引值(null),所有结果都将相互覆盖。因此,您得到的结果是查询结果集中的最后一条记录。想想看,您可以使用您的
config\u name
列作为主键
foreach ($config as $row) {
    //print_r($row);
    echo $row->config_name;
    echo ' = ';
    echo $row->config_value;
    echo '<br>';
}