From feb2891f564753fb00068f1420e796919314807b Mon Sep 17 00:00:00 2001 From: Toby Zerner Date: Sat, 25 Apr 2015 22:36:34 +0930 Subject: [PATCH] Allow custom relation to be specified as string --- .../src/Api/Serializers/BaseSerializer.php | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/framework/core/src/Api/Serializers/BaseSerializer.php b/framework/core/src/Api/Serializers/BaseSerializer.php index b9b718cab..f4bce63c4 100644 --- a/framework/core/src/Api/Serializers/BaseSerializer.php +++ b/framework/core/src/Api/Serializers/BaseSerializer.php @@ -43,17 +43,17 @@ abstract class BaseSerializer extends SerializerAbstract return $attributes; } - protected function relationship($serializer, Closure $callback = null, $many = false) + protected function relationship($serializer, $relation = null, $many = false) { // Get the relationship name from the stack trace. - if (is_null($callback)) { + if (is_null($relation)) { list(, , $caller) = debug_backtrace(false, 3); $relation = $caller['function']; } - return function ($model, $include, $links) use ($serializer, $callback, $many, $relation) { - if ($callback) { - $data = $callback($model, $include); + return function ($model, $include, $links) use ($serializer, $many, $relation) { + if ($relation instanceof Closure) { + $data = $relation($model, $include); } else { if ($include) { $data = $model->$relation; @@ -75,14 +75,14 @@ abstract class BaseSerializer extends SerializerAbstract }; } - public function hasOne($serializer, Closure $callback = null) + public function hasOne($serializer, $relation = null) { - return $this->relationship($serializer, $callback); + return $this->relationship($serializer, $relation); } - public function hasMany($serializer, Closure $callback = null) + public function hasMany($serializer, $relation = null) { - return $this->relationship($serializer, $callback, true); + return $this->relationship($serializer, $relation, true); } /** @@ -94,6 +94,6 @@ abstract class BaseSerializer extends SerializerAbstract */ public function __call($name, $arguments) { - return event(new SerializeRelationship($this, $name), null, true); + return event(new SerializeRelationship($this, $name), null, true); } }