如何使用Laravel/Eloquent操作JSONB字段中的对象数组?
我在数据库的如何使用Laravel/Eloquent操作JSONB字段中的对象数组?,json,laravel,eloquent,Json,Laravel,Eloquent,我在数据库的destination\u data字段中有这种JSONB对象: [ { "uuid": "20670fe3-eb4a-4097-b29c-78b4b5a7ffc0", "name": "foo", "address" bar, }, { "uuid": "20424d
destination\u data
字段中有这种JSONB对象:
[
{
"uuid": "20670fe3-eb4a-4097-b29c-78b4b5a7ffc0",
"name": "foo",
"address" bar,
},
{
"uuid": "20424d4f-7ffd-4fd2-a434-74f318385ccf",
"name": "foo",
"address" bar,
},
{
"uuid": "eb5e12b3-25bb-43a5-9e8e-02ebc0831edf",
"name": "foo",
"address" bar,
},
{
"uuid": "78600c45-18b7-4eb8-8f5c-403296bd1635",
"name": "foo",
"address" bar,
},
{
"uuid": "f96f5751-d984-435e-9361-14c767ce312d",
"name": "foo",
"address" bar,
}
]
我知道,通过Eloquent,我可以直接访问jsonb字段,如下所示:
$affected = DB::table('users')
->where('id', 1)
->update(['options->enabled' => true]);
但是如果我需要通过其uuid
更新json对象,并更改名称
等,该怎么办。?这是一个基本上克隆整个对象并用eloqunt更新整个字段的问题吗?像这样:
$destinationData = $myModel->destination_data;
$keyOfFirstDestination = array_search('20670fe3-eb4a-4097-b29c-78b4b5a7ffc0', $destinationData);
$firstDestination = destinationData[$keyOfFirstDestination);
[..blah blah blah]
当然有更简单的方法吗?在MySQL中,您可以使用and的组合(不过可能需要稍微操纵JSON_SEARCH返回的键)