Modelo Laravel com POINT / POLYGON etc. usando expressões DB :: raw

Eu tenho alguns modelos que usam campos geoespaciais comoPOINT, POLYGON ouMULTIPOLYGON. Gostaria de dizer ao meu modelo para processar esses atributos de uma maneira especial, para que eu obtenha os atributos de modelo desejados.

Exemplo: Todos os regularesModel::find() ou outro método Eloquent deve aplicar algum código personalizado antes de armazenar ou recuperar um valor do banco de dados.

$area->surface é umPOLYGON no MySQL, mas na minha classe de modelo eu gostaria de lidar$area->surfare como uma matriz de pontos.

EmSELECT Portanto, eu gostaria de 1) buscar o valor usando uma expressão bruta para obter uma representação de texto do valor e 2) passar por algum código PHP personalizado para converter a string WKT em uma matriz.

EmINSERT/UPDATE Eu gostaria de pegar o valor do atributo (uma matriz) e 1) convertê-lo em uma sequência WKT, após o que 2) é gravado no banco de dados usando uma instrução bruta de banco de dados que armazena o valor.

Eu gostaria de definir isso com base no campo, não como funções especiais de obter / definir para cada campo, e não nos controladores - porque tenho muitos campos geoespaciais.

Existe uma maneira de conseguir isso no Laravel?

(Uma versão mais abstrata da mesma pergunta é como eu posso criar código que manipula valores de atributos para as consultas SQL reais, em vez de apenas uma manipulação baseada em valor via mutadores e acessadores)

ATUALIZAR: Analisando mais profundamente o Doc e a API do Laravel, descobri que talvez oEloquent::newQuery() método é o que eu preciso manipular? Isso seria usado para qualquer consulta, independentemente deSELECT, INSERT ouUPDATE?

questionAnswers(3)

yourAnswerToTheQuestion