0

データベースに「サーバー」という名前のテーブルがあります。したがって、そのコードでデータを追加したい場合は、問題ありません。

    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ブロック内のコードを変更して問題を解決しようとしています:

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

「->where」なしでデータベースからすべてのサーバーを取得しようとしても、機能しません。

何か案は?

4

1 に答える 1

0

print_r($servers);ブロック内で試してtry、モデルから何が得られるかを確認してください。

そして$servers、結果のあるクラスです - foreach を使用して結果を取得します (1 つずつ)

$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();
}
于 2013-07-13T18:48:48.200 に答える