Skip to main content
 首页 » 编程设计

mysql之Kohana 3.2 选择问题

2023年09月28日23tuyile006

我的数据库中有一个名称为“服务器”的表。因此,当我想用​​该代码添加一些数据时就可以了:

    public function action_add() 
    { 
        $serverGameId = (int)Arr::get($_POST, 'serverGameId', ''); 
        $newServerName = Arr::get($_POST, 'newServerName', ''); 
 
        try 
        { 
           $server = new Model_Server(); 
           $server->Name = $newServerName; 
           $server->GameId = $serverGameId; 
           $server->save(); 
        } 
        catch(ORM_Validation_Exception $e) 
        { 
           echo json_encode(array("success" => false, "errors" => $e->errors('validation'))); 
           return false; 
        } 
 
        $this->request->headers['Content-Type'] = 'application/json'; 
        echo json_encode(array("success" => true, "serverId" => $server->Id)); 
        return true; 
    } 

这是一个模型:

class Model_Server extends ORM { 
 
protected $_table_name = 'servers'; 
 
public function rules() 
{ 
    return array( 
        'Name' => array( 
            array('not_empty'), 
        ) 
    ); 
} 

}

但是当我尝试从表中选择它时遇到问题:

    public function action_servers() 
{ 
        $gameId = (int)Arr::get($_POST, 'gameId', ''); 
 
        if($gameId == -1) return false; 
 
        try 
        { 
            $servers = ORM::factory('server') 
                        ->where('GameId', '=', $gameId) 
                        ->find_all(); 
        } 
        catch(ORM_Validation_Exception $e) 
        { 
           echo json_encode(array("success" => false, "errors" => $e->errors('validation'))); 
           return false; 
        } 
 
        $this->request->headers['Content-Type'] = 'application/json'; 
        echo json_encode(array("success" => true, "servers" => $servers, "gameId" => $gameId)); 
        return true; 
    } 

我已经尝试通过更改 try block 内的代码来解决问题:

$servers = DB::select('servers')->where('GameId', '=', $gameId); 

即使我尝试从数据库获取所有服务器而不使用“->where”,它也不起作用。

有什么想法吗?

请您参考如下方法:

try block 中尝试 print_r($servers); 以查看从模型中获得的结果。

$servers 是一些带有结果的类 - 使用 foreach 获取结果(一个接一个)

$results = array(); 
 
foreach($servers as $row) { 
   //echo $row->Name; 
   $results[] = $row->Name; 
} 

或者

$results = array(); 
 
foreach($servers as $row) { 
   //echo $row->as_array(); 
   $results[] = $row->as_array(); 
}