例如,我将JSON存储在名为“数据”的数据库的行中
External.php(模型)-将“数据”转换为数组:
protected $casts = [
'data' => 'array',
];
我可以使用Tinker这个命令来访问它:
$external = App\External::first()->pluck('data');
这将返回
Illuminate\Support\Collection {#3384
all: [
[
"id" => 17566616456845,
"name" => "#1008",
"note" => "",
"tags" => "",
"test" => false,
"email" => "katie.jane@example.com",
"phone" => null,
...
..
.
如何访问该集合中的“电子邮件”或“ id”?如何修改tinker雄辩的命令以获取“ id”或“电子邮件”?
$ external = App \ External :: all()-> pluck('data')->'email'
第1行上的T_STRING或T_VARIABLE或'{'或'$'>消息'属性[电子邮件]上的异常不存在> PHP解析错误:语法错误,意外的T_CONSTANT_ENCAPSED_STRING, 期待
变暖:
>>> $external = App\External::pluck('data')->get('email')
=> null
答案 0 :(得分:1)
pluck()方法返回数组。因此,如果要访问“电子邮件”,则必须使用。
$external = App\External::first()->pluck('data');
$email = $external['email']; // katie.jane@example.com
答案 1 :(得分:0)
如果您只是想获取一条记录的数据,请使用cast属性作为数组:
// one External record
$external = App\External::first();
$email = $external->data['email'];
$id = $external->data['id'];
答案 2 :(得分:0)
您不必使用pluck()
。
如果要从外部的数据访问电子邮件。
$email = App\External::first()->data['email'];
更新
获取所有电子邮件。
$emails = App\External::all()
->map(function($external) {
return $external->data['email'];
});
答案 3 :(得分:0)
尝试一下
$external = collect(App\External::all()->pluck('data'))->pluck('email')->all();