FuelPHP ORM查找('all')只获得一行

时间:2013-12-20 06:33:23

标签: php fuelphp fuelphp-orm

当我使用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 =我的网站

如何从此数据库表中获取所有结果?要么 如何在何处获得多个结果?

2 个答案:

答案 0 :(得分:1)

这里的问题确实是因为@vee说ORM希望你有一个主键分配给你的表。默认情况下,orm中只有一个名为“id”的列。如果您没有指定PK意外行为,例如此。

在桌面上定义主键后,应解决此问题。

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

答案 1 :(得分:0)

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

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

嗯...... :(