Я использую Laravel с ES и пытаюсь построить динамический запрос.Как перенести элементы в массив в php
Но следующий не работает:
$query[] = ['term' => ['city' => 1]];
$query[] = ['term' => ['state' => 2]];
$query[] = ['range' => ['price' => ['lte' => 2]]];
$asd = ['filtered' => [
'query' => [
'match' => ['title' => Input::get('query')]
],
'filter'=> [
'bool' => [
'must' => [
['term' => [ 'is_active' => 1] ],
[ 'range' => [
'end_date' => [
'from' => 'now'
]
]
],
$query
]
]
],
],];
echo json_encode($asd);
Это добавит $ запрос [] неправильно в $ ASD, как:
{"term":{"is_active":1}},
{"range":{"end_date":{"from":"now"}}},
[
{"term":{"city":1}},
{"term":{"state":2}},
{"range":{"price":{"lte":2}}}
]
Как я хотел бы добавить это:
{"term":{"is_active":1}},
{"range":{"end_date":{"from":"now"}}},
{"term":{"city":1}},
{"term":{"state":2}},
{"range":{"price":{"lte":2}}}
без [] вокруг него.
решаемые:
$asd = ['filtered' => [
'query' => [
'match' => ['title' => Input::get('query')]
],
'filter'=> [
'bool' => [
'must' =>
$query
]
],
],];
'[]' указывает, что объекты находятся в массиве. Без скобок это не было бы законным json. – Jite
@Jite [] не должен быть в нем, ES вернет ошибку, если я отправлю этот запрос. Проверьте мое обновление. – user2722667
Что такое ES? И почему он попросил недействительного json? – Jite