我的数据库中有一个名称为“服务器”的表。因此,当我想用该代码添加一些数据时就可以了:
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();
}