FuelPHP ORM find(';all';)仅获取一行
当我使用FuelPHP ORM使用find('ALL')获得所有结果时,它只返回一条记录 这是我的数据库。 表名ws_config。(无主键) 这是我的模型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.
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>';
}