Laravel 5 在Elount中返回和访问JSON字段

Laravel 5 在Elount中返回和访问JSON字段,laravel-5,Laravel 5,我有一个名为EmploymentApplication的模型,当有人提交申请时,它使用JSON字段保存所有提交的表单数据。该字段简称为“数据”。我正在研究资源控制器的“索引”方法。我只想返回id、名字和姓氏(在“data”JSON字段中) 我正试图在Tinker中找到答案(目前数据库中只有一个应用程序): $result=\App\Models\EmploymentApplications\EmploymentApplication::all(['id','data->fname','data-

我有一个名为EmploymentApplication的模型,当有人提交申请时,它使用JSON字段保存所有提交的表单数据。该字段简称为“数据”。我正在研究资源控制器的“索引”方法。我只想返回id、名字和姓氏(在“data”JSON字段中)

我正试图在Tinker中找到答案(目前数据库中只有一个应用程序):

$result=\App\Models\EmploymentApplications\EmploymentApplication::all(['id','data->fname','data->lname'])

返回:

Illuminate\Database\Eloquent\Collection {#888
 all: [
   App\Models\EmploymentApplications\EmploymentApplication {#881
     id: 1,
     `data`->'$."fname"': ""Betty"",
     `data`->'$."lname"': ""Sue"",
   },
 ],
}

因此,它返回了正确的数据。让我困惑的是如何从这里访问数据->fname和数据->lname

$result[0]->id
工作正常

$result[0]->(backtick)数据(backtick)->'$“lname”

抛出:

PHP分析错误:语法错误,意外的“`”,第1行应为T_字符串或T_变量或“{”或“$”

访问这些属性的正确方法是什么

我知道我可以在从控制器返回结果之前使用array_map来清理结果,但是这里的最佳实践是什么

谢谢。

使用列别名:

$result=EmploymentApplication::all(['id','data->fname as fname','data->lname as lname']);
$result[0]->fname
$result[0]->lname

我不确定这是否是您的意思,但如果我使用的是tinker并希望从我的数据库中获取信息,这就是我使用的

DB::select("SELECT id, fname, lname FROM EmploymentApplication")
或者如果你正在寻找一个特定的id

DB::select("SELECT id, fname, lname FROM EmploymentApplication WHERE id=1")

太好了。这就是我想要的答案。非常感谢。