I have Eloquent model Instance
(id - primary key, title - text, location - point), where point
is mysql data type.
When I use this model in events which should be broadcasted into user's browser via websockets, I use SerializesModels
trait, because otherwise it can not serialize object.
Instance
model has this function
public function getLocationAttribute($value) {
if($value === null) return null;
$value = unpack('Lpadding/corder/Lgtype/dlatitude/dlongitude', $value);
return $value['latitude'] . ',' . $value['longitude'];
}
That's why when it uses SerializesModels
trait it gets correct value (not binary from column of data type 'POINT').
But when this model is used in relation
InstanceComment
id - primary key
user_id - id of user
text - comment text
instance - `Instance` (in database it is just an integer, but in php it is actual model).
When I issue
event(new InstanceCommentCreated($instanceComment))
it fails with InvalidPayloadException at Queue.php:89
Because it tries to serialize this object structure
InstanceComment
id = 1
user_id = 1
text = 'hello'
instance =
id = 1
title = 'example instance'
location = binary data from database (getLocationAttribute() is not used)
What are my options to force serializations in such cases? When Instance
is primary object in event SerializesModels
trait helps, but when it is foreign model - it does'nt.
via Jackson J