Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kapitanluffy/propel-model-parser-bundle
The PropelModelParserBundle enables Propel BaseObjects to be parsed into array, which in turn can be converted into JSON for API responses. Unlike native BaseObject methods like toJSON(), the PropelModelParserBundle can automatically convert BaseObjects as well as their "child objects" to array, as well as add custom properties.
https://github.com/kapitanluffy/propel-model-parser-bundle
orm php propel propel-models
Last synced: 28 days ago
JSON representation
The PropelModelParserBundle enables Propel BaseObjects to be parsed into array, which in turn can be converted into JSON for API responses. Unlike native BaseObject methods like toJSON(), the PropelModelParserBundle can automatically convert BaseObjects as well as their "child objects" to array, as well as add custom properties.
- Host: GitHub
- URL: https://github.com/kapitanluffy/propel-model-parser-bundle
- Owner: kapitanluffy
- Created: 2015-04-29T08:33:35.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2015-06-25T00:52:34.000Z (over 9 years ago)
- Last Synced: 2024-11-18T09:46:08.859Z (about 2 months ago)
- Topics: orm, php, propel, propel-models
- Language: PHP
- Homepage:
- Size: 160 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Propel Model Parser Bundle
The PropelModelParserBundle enables Propel BaseObjects to be parsed into array, which in turn can be converted into JSON for API responses.
Unlike native BaseObject methods like toJSON(), the PropelModelParserBundle can automatically convert BaseObjects as well as their "child objects" to array, as well as add custom properties.
#### Installation:
1. Install PropelModelParserBundle using Composer
2. Register bundle in AppKernel
3. In your Propel *schema.xml*, Use `kapitanluffy\PropelModelParserBundle\BaseModel` as your baseClass
4. Rebuild Propel models.#### Usage:
In your controller..
```php
joinWith('Post')
->findOneById($user_id);
$post_count = $user->getPosts()->count();
$properties = new PropertyCollection;
$properties->addProperty('posts', 'getPosts')
// parse child object's (post) children (user)
->useProperty('posts')
->addProperty('poster', 'getUser')
->endUse()
// add custom property
->addProperty('post_count', $post_count);
$data = $user->parseObject($properties);
$response = new JsonResponse;
$response->setData($data);
return $response;
}
}
```Will result into
``` json
{
"id":1,
"username":"user1",
"password":"pass",
"email":"[email protected]",
"posts":[
{
"id":1,
"string":"this is user1\u0027s post",
"user_id":1,
"created_at":{
"date":"2015-06-24 11:28:52.000000",
"timezone_type":3,
"timezone":"UTC"
},
"updated_at":{
"date":"2015-06-24 11:28:52.000000",
"timezone_type":3,
"timezone":"UTC"
},
"poster":{
"id":1,
"username":"user1",
"password":"pass",
"email":"[email protected]"
}
},
{
"id":4,
"string":"another user1 post",
"user_id":1,
"created_at":{
"date":"2015-06-24 11:28:52.000000",
"timezone_type":3,
"timezone":"UTC"
},
"updated_at":{
"date":"2015-06-24 11:28:52.000000",
"timezone_type":3,
"timezone":"UTC"
},
"poster":{
"id":1,
"username":"user1",
"password":"pass",
"email":"[email protected]"
}
}
],
"post_count":2
}
```