我正在尝试获取其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查询的结构。
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();
});
}
// ...
}
第二种方法(不起作用)
return Vendor::whereJsonContains('subscribed_places', '{"id":1}')
->get();
仍然返回0条记录。