Backbone.js が読み取れるように、Propel ORM を使用して非常に単純な「すべてを一覧表示」する関数を作成しようとしています。これは私がやりたいことであり、私の意見ではうまくいくはずです:
$users = UsersQuery::create()
->find();
echo $users->toJSON();
ただし、それを実行すると、次の結果が得られます。
{"Users_0":{"Id":1,"EmailAddress":"sdf","Password":"sdf","CreatedAt":null,"ModifiedAt":null},
"Users_1":{"Id":2,"EmailAddress":"dsf","Password":"sdf","CreatedAt":null,"ModifiedAt":null}}
それは有効な JSON ですが、行がメイン配列の配列であるという事実は、私の JSON を捨てています。返す必要があるのは、次のような JSON です。
[{"Id":1,"EmailAddress":"sdf","Password":"sdf","CreatedAt":null,"ModifiedAt":null},{"Id":2,"EmailAddress":"dsf","Password":"sdf","CreatedAt":null,"ModifiedAt":null}]
以下の関数を (テストとして) 作成しましたが、完全に動作しますが、確かに Propel (または、私が使用しているフレームワークである Slim) には配列内にあるすべてのものを停止する方法がありますか? ここでハックします。
$users = UsersQuery::create()
->find();
$json = '[';
foreach($users as $user){
$json = $json.$user->exportTo('JSON').',';
}
$json = $json.']';
echo str_replace("},]", "}]", $json);
どんな助けでも大歓迎です!皆さんありがとう。