如何使用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返回的键)