在Laravel Postgresql中查询Json对象数组时无法获取数据

时间:2018-12-27 18:35:05

标签: json laravel postgresql laravel-5.7

我正在尝试获取其ID与给定值匹配的所有记录。

Laravel版本: laravel/framework: "5.7.*"

PHP版本: php: ^7.1.3"

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

下面是带有示例数据的表和postgres sql查询的结构。

DB

subscribed_places 列包含-> [{"id":1},{"id":4}]

在laravel中,我正在使用以下代码。

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

由于存在值 1 ,它应该返回该记录,但即使通过了 4 ,其结果也为0。

供应商模型类

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();
        });
    }
    // ...
}

第二种方法(不起作用)

enter image description here

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

仍然返回0条记录。

0 个答案:

没有答案