Laravel JSON列上雄辩的Select查询
我有一个属性表的JSON列。下面是选择特定字段的有力查询Laravel JSON列上雄辩的Select查询,laravel,eloquent,Laravel,Eloquent,我有一个属性表的JSON列。下面是选择特定字段的有力查询 Company::select('id', 'information') ->with([ 'properties' => function($sql) { return $sql->select('id', 'company_id', 'information->>status'); } ])
Company::select('id', 'information')
->with([
'properties' => function($sql) {
return $sql->select('id', 'company_id', 'information->>status');
}
])
->get();
有没有办法用实际密钥替换响应?获取密钥的最简单方法是给它一个别名。大概是
$sql->select('id', 'company_id', 'information->status as status');
$sql->select('id', 'company_id', 'information->status as information_status');
$sql->select('id', 'company_id', 'information->status as information.status');
编辑
如果您希望保持响应的结构,那么最好创建一个响应并让它处理该结构。所以
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Http\Resources\Json\ResourceCollection;
class Properties extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
$information = ['status'=>optional($this->information)['status']];
return [
'id' => $this->id,
'company_id' => $this->company_id,
'information' => $information,
];
}
}
我想保持响应的结构<代码>..,属性:[{id:90,信息:{status:“available”}}]