0

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

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

--------------------------
config_name | config_value |
--------------------------
site_name | My Site |
--------------------------
member_allow_register | 1 |
--------------------------

这是我的模型。

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>';
}

结果只是

site_name = 我的网站

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

4

2 回答 2

1

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

一旦你在你的表上定义了一个主键,这个问题就应该得到解决。

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

于 2013-12-20T13:03:32.837 回答
0

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

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

嗯... :(

于 2013-12-20T06:54:57.160 回答