I’m trying to convert a json column name with path ‘foo->bar’ to be compatible with mysql/postgresql using Laravel’s wrapJsonSelector() method.
How can I access this method from the query builder calling getGrammar throws error:
Method IlluminateDatabaseQueryGrammarsMySqlGrammar::isJsonSelector does not exist.
Eg
$query->where(function (Builder $query) use ($searchColumn): Builder {
if ($query->getGrammar()->isJsonSelector($searchColumn)) {
$searchColumn = $query->getGrammar()->wrapJsonSelector($searchColumn);
}
// ...
})
2
Answers
The selectRaw method allows you to write raw SQL expressions within your query.
isJsonSelector
andwrapJsonSelector
are protected methods, which means you cannot access them from outside the class. However, you don’t need to invoke either of them directly in the first place. You can just use thewrap
method, which will invokewrapJsonSelector
in the case you want to cover here.