I have a model where column location
represents coordinates.
This column can be null. When it is null everything is fine, but when there is some data, then:
If it is used inside internal laravel events (which does not implement ShouldBroadcast) then I have to add
use SerializesModels
, otherwise field is not deserialized, exception is throwninvalidPayloadException in Queue.php line 89
If it ised inside
broadcast
laravel events (which must be delivered into browser) then node.js fails to parse it.
Example: location
is null
Event:
{"event":"App\\Events\\ViewingUsersUpdated","data":{"users":[{"id":1,"created_at":"2017-04-12 07:20:16","updated_at":"2017-04-12 07:20:16","creator_id":null,"phone":"70000000000","first_name":"\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 1","last_name":"","middle_name":"","active":1,"manager_id":null,"avatar":"\/img\/profile.png","full_name":"70000000000 \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 1 ","user_timezone":"Europe\/Moscow"}],"instance":{"id":1,"created_at":"2017-04-12 11:29:06","updated_at":"2017-04-12 13:55:32","creator_id":1,"test_field_text":"1234567892131","user_field_single":null,"image_single":null,"location":null,"address_area":"b8837188-39ee-4ff9-bc91-fcc9ed451bb3","address_region":null,"address_city":"f66a00e6-179e-4de9-8ecb-78b0277c9f10","address_locality":null,"address_street":null,"modelType":"testing"}},"socket":null}
location
is not null
Event:
undefined:1
P.S.
Mutator:
$this->attributes[$key] = DB::raw('POINT(' . $value . ')');
Accessor:
$value = unpack('Lpadding/corder/Lgtype/dlatitude/dlongitude', $value);
$value = $value['latitude'] . ',' . $value['longitude'];