Невозможно получить данные при запросе массива объектов Json в Laravel Postgresql - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь получить все записи, чей идентификатор соответствует заданному значению.

Версия Laravel: laravel/framework: "5.7.*"

Версия PHP: php: ^7.1.3"

psql -V : psql (PostgreSQL) 11.1 (Ubuntu 11.1-1.pgdg16.04+1)

Ниже приведена структура SQL-запроса таблицы и postgres с примерами данных.

DB

subscribed_places столбец содержит -> [{"id":1},{"id":4}]

Из laravel Я использую код ниже.

return Vendor::whereJsonContains('subscribed_places->id', 1)
            ->get();

так как значение 1 присутствует, оно должно вернуть эту запись, но оно дает 0 результатов, даже если передано 4 .

Модель модели поставщика

class Vendor extends Model
{
    protected $table = 'vendor';

    protected $casts = [
        'subscribed_places' => 'array',
    ];

    protected $hidden = [
        'created_at', 'updated_at',,
    ];
}

Файл миграции

class CreateVendorTable extends Migration
{
    public function up()
    {
        Schema::create('vendor', function (Blueprint $table) {
            $table->increments('id')->unsigned();
            $table->string('vendor_code', 30)->unique();
            $table->json('subscribed_places');
            $table->timestamps();
        });
    }
    // ...
}

2-й подход (не работает)

enter image description here

return Vendor::whereJsonContains('subscribed_places', '{"id":1}')
            ->get();

Все еще возвращает 0 записей.

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