Skip to content

Commit 54682fa

Browse files
Merge pull request #477 from lfglopes/bugfix/serializer
When a foriegn key is NULL and it's value is mapped with belongs_to, serialization breaks
2 parents dda3bff + 95f53ea commit 54682fa

File tree

6 files changed

+15
-5
lines changed

6 files changed

+15
-5
lines changed

lib/Serialization.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,11 @@ private function check_include()
173173
try {
174174
$assoc = $this->model->$association;
175175

176-
if (!is_array($assoc))
176+
if ($assoc === null)
177+
{
178+
$this->attributes[$association] = null;
179+
}
180+
elseif (!is_array($assoc))
177181
{
178182
$serialized = new $serializer_class($assoc, $options);
179183
$this->attributes[$association] = $serialized->to_a();;

test/RelationshipTest.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,12 @@ public function test_belongs_to_returns_null_when_no_record()
133133
$this->assert_null($event->venue);
134134
}
135135

136+
public function test_belongs_to_returns_null_when_foreign_key_is_null()
137+
{
138+
$event = Event::create(array('title' => 'venueless event'));
139+
$this->assert_null($event->venue);
140+
}
141+
136142
public function test_belongs_to_with_explicit_class_name()
137143
{
138144
Event::$belongs_to = array(array('explicit_class_name', 'class_name' => 'Venue'));

test/sql/mysql.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ CREATE TABLE venues (
3838

3939
CREATE TABLE events (
4040
id int NOT NULL auto_increment PRIMARY KEY,
41-
venue_id int NOT NULL,
41+
venue_id int NULL,
4242
host_id int NOT NULL,
4343
title varchar(60) NOT NULL,
4444
description varchar(50),

test/sql/oci.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ CREATE TABLE venues (
4141
CREATE SEQUENCE events_seq;
4242
CREATE TABLE events (
4343
id INT NOT NULL PRIMARY KEY,
44-
venue_id int NOT NULL,
44+
venue_id int NULL,
4545
host_id int NOT NULL,
4646
title varchar(60) NOT NULL,
4747
description varchar(10),

test/sql/pgsql.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ CREATE TABLE venues (
3737

3838
CREATE TABLE events (
3939
id SERIAL PRIMARY KEY,
40-
venue_id int NOT NULL,
40+
venue_id int NULL,
4141
host_id int NOT NULL,
4242
title varchar(60) NOT NULL,
4343
description varchar(10),

test/sql/sqlite.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ CREATE TABLE venues (
3737

3838
CREATE TABLE events (
3939
id INTEGER NOT NULL PRIMARY KEY,
40-
venue_id int NOT NULL,
40+
venue_id int NULL,
4141
host_id int NOT NULL,
4242
title varchar(60) NOT NULL,
4343
description varchar(10),

0 commit comments

Comments
 (0)