我有一个名为EmploymentApplication的模型,当有人提交其申请时,该模型使用JSON字段来保存所有提交的表单数据。该字段简称为“数据”。我正在研究资源控制器的“索引”方法。我只想返回ID,以及名字和姓氏(在“数据” 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"",
},
],
}
因此,它正在返回正确的数据。让我难过的是如何从此处访问data-> fname和data-> lname。
$result[0]->id
可以正常工作。
$result[0]->(backtick)data(backtick)->'$."lname"'
抛出:
PHP解析错误:语法错误,意外的“`”,期望在第1行出现T_STRING或T_VARIABLE或“ {”或“ $”
访问这些属性的正确方法是什么?
我知道我可以在从控制器返回结果之前使用array_map清理结果,但是这里的最佳实践是什么?
谢谢。
答案 0 :(得分:1)
使用列别名:
$result = EmploymentApplication::all(['id', 'data->fname as fname', 'data->lname as lname']);
$result[0]->fname
$result[0]->lname
答案 1 :(得分:0)
我不确定这是否是您的意思,但是如果我使用修补程序,并且想从数据库中获取信息,这就是我的用途。
DB::select("SELECT id, fname, lname FROM EmploymentApplication")
或者如果您要查找特定的ID。
DB::select("SELECT id, fname, lname FROM EmploymentApplication WHERE id=1")