Я пытаюсь получить все записи, чей идентификатор соответствует заданному значению.
Версия 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](https://i.stack.imgur.com/KESGP.png)
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](https://i.stack.imgur.com/TRoIX.png)
return Vendor::whereJsonContains('subscribed_places', '{"id":1}')
->get();
Все еще возвращает 0 записей.