почему это всегда возвращает пустой массив - PullRequest
0 голосов
/ 06 сентября 2018

это мой код запроса для поиска

if ($request->has('search'))
{
    $search = $request->get('search');
    $households = Household::where('data->household_id', 'LIKE', '%$search%')
        ->orWhere('data->data->household->address', 'LIKE', '%' .$search .'%')
        ->orWhere('data->data->members', 'LIKE', '%' .$search.'%')->get();
} else {
    $households = Household::all();
}

if ($households)
{
    return response()->json([
            'error' => false,
            'data'  => HouseholdResource::collection($households),
        ], 200);
}

return "No data found for search";

Всегда возвращает пустой массив, даже если данные существуют в базе данных.

и это моя миграция

$data = [
        'household_id'   => $request->get('enumeration_id'),
        'data'           => json_encode([
            'household' => [
                'address'=> $request->get('address'),
            ],
            'members'=> [],

        ]),
    ];

есть моя таблица миграции

Schema::create('households', function (Blueprint $table) {
        $table->uuid('id');
        $table->primary('id');
        $table->string('household_id')->unique();
        $table->jsonb('data');
        $table->timestamps();
        $table->softDeletes();
    });

данные базы данных похожи на

"household": {
            "enumeration_id": "1938347-32960066",
            "location": "676 Derick Cape\nReeseburgh, WA 95751",
            "identifier": "122 b 2",
            "location_code": "LK-CMB-002",
            "address": {
                "text": "86242 Lynch Roads\nSouth Deon, KS 16600-5109",
                "village": "address village",
                "district": "address district"
            },

У вас есть проблема? мне нужна помощь

1 Ответ

0 голосов
/ 06 сентября 2018

Предполагая, что в вашей таблице есть два столбца, domestic_id и data, из которых data является полем JSON, ваш запрос должен выглядеть следующим образом:

Household::where('household_id', 'LIKE', '%' . $search . '%')
        ->orWhere('data->household->address', 'LIKE', '%' .$search .'%')
        ->orWhere('data->members', 'LIKE', '%' .$search.'%')
        ->get();

Я не уверен, почему вы пытаетесь перевести все на другой уровень данных. Я также не думаю, что data->members будет доступен для поиска таким образом, основываясь на предоставленной вами структуре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...