mirror of https://github.com/go-gorm/gorm.git
f06d6412de
When using `Preload` to include the results of a "has many" relationship, Gorm previously returned an uninitialized slice for any such relations that bore zero records. This distinction was most apparent when the results were marshalled to a JSON representation--a record with zero related records would be represented with `null`. For example, consider the following schema: id | name ---|------ 1 | Lorin 2 | Sue id | p_id | value ---|------|------------------- 1 | 1 | lorin@example.com 2 | 1 | lorin2@example.com Querying with: db.Preload("Email").Find(&people) And marshalling the resulting value of `people` to JSON would yield the following string: [ { "name": "Lorin", "email": [ "lorin@example.com", "lorin2@example.com" ] }, { "name": "Sue", "email": null } ] Beyond being inconsistent, the value `null` in this response differs semantically from the actual state of the database. The database actually has zero related records for the second user, so a JSON value of `[]` is appropriate. Update the callback that processes "has many" relationships to communicate empty query results with an empty slice. |
||
---|---|---|
dialects | ||
.codeclimate.yml | ||
.gitignore | ||
CONTRIBUTING.md | ||
License | ||
README.md | ||
association.go | ||
association_test.go | ||
callback.go | ||
callback_create.go | ||
callback_delete.go | ||
callback_query.go | ||
callback_query_preload.go | ||
callback_save.go | ||
callback_system_test.go | ||
callback_update.go | ||
callbacks_test.go | ||
create_test.go | ||
customize_column_test.go | ||
delete_test.go | ||
dialect.go | ||
dialect_common.go | ||
dialect_mysql.go | ||
dialect_postgres.go | ||
dialect_sqlite3.go | ||
embedded_struct_test.go | ||
errors.go | ||
field.go | ||
field_test.go | ||
interface.go | ||
join_table_handler.go | ||
join_table_test.go | ||
logger.go | ||
main.go | ||
main_test.go | ||
migration_test.go | ||
model.go | ||
model_struct.go | ||
multi_primary_keys_test.go | ||
pointer_test.go | ||
polymorphic_test.go | ||
preload_test.go | ||
query_test.go | ||
scaner_test.go | ||
scope.go | ||
scope_test.go | ||
search.go | ||
search_test.go | ||
test_all.sh | ||
update_test.go | ||
utils.go | ||
utils_test.go | ||
wercker.yml |
README.md
GORM
The fantastic ORM library for Golang, aims to be developer friendly.
Overview
- Full-Featured ORM (almost)
- Associations (Has One, Has Many, Belongs To, Many To Many, Polymorphism)
- Callbacks (Before/After Create/Save/Update/Delete/Find)
- Preloading (eager loading)
- Transactions
- Composite Primary Key
- SQL Builder
- Auto Migrations
- Logger
- Extendable, write Plugins based on GORM callbacks
- Every feature comes with tests
- Developer Friendly
Getting Started
- GORM Guides jinzhu.github.com/gorm
Upgrading To V1.0
Author
jinzhu
Contributors
https://github.com/jinzhu/gorm/graphs/contributors
License
Released under the MIT License.