从 Laravel 中保存在单列中的数组中获取值

Fetch value from array saved in a single column in Laravel

我想从数组中获取单个值,该数组已保存在 Laravel 的单个 mysql 列中。

我的 mysql table 列在控制器中看起来像这样:

$registrations = RegistrationLog::groupBy('phone_number')->get();

我想进入请求 object 部分并从保存在 request_object 列中的那个数组中获取电子邮件地址值。

请告诉我如何在 laravel 中实现此目的,因为我已尝试在 blade 中的 foreach 中使用以下代码,但抛出 'Trying to get property of non-object error'

代码:

@foreach($registrations as $reg)
    <tr>
        <td>
            {!! $reg->request_object->email !!}
        </td>   
    </tr>
@endforeach

这在您的专栏中看起来不像 "array",这看起来像 JSON 字符串。

假设此数据采用有效的 JSON 格式:在您的 RegistrationLog 模型中,您需要使用 JSON to Array casting 以便将列解码为数组。

class RegistrationLog extends Model
{
    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'request_object' => 'array',
    ];
}

然后您可以访问它 $reg->request_object['email']

您可以使用 mutation, to format eloquent property like you want befor access. Also you can use attribute casting,它将在您调用 ->toArray() 方法到 Eloquent 模型时应用。或者只是 json_decode($reg->request_object)->email