Я использую laravel в качестве API отдыха, я получаю данные от контроллера:
$user= User::where('id', $id)->first(['id', 'name', 'phone', 'work', 'address']);
Результат:
{
"data": {
"id": 1,
"name": "mike shinoda",
"phone": "0584634425",
"work": null,
"address": null
}
}
Теперь я хочу получить секретные данные, это национальный идентификатор, Я не хочу включать это в json данные, просто хочу обнаружить, если оно установлено, вернуть другие данные. Я хочу, если установлен национальный идентификатор,
$user= User::where('id', $id)->first(['id', 'name', 'phone', 'work', 'address', 'national_id']);
результат:
{
"data": {
"id": 1,
"name": "mike shinoda",
"phone": "0584634425",
"work": null,
"address": null,
"national_id": 2115 // I don't want this
}
}
Вместо этого, если установлен национальный идентификатор, вернуть данные, как это:
{
"data": {
"id": 1,
"name": "mike shinoda",
"phone": "0584634425",
"work": null,
"address": null,
"verified": true // return this if national id is set
}
}
То, что я пробовал:
$verified = false;
$national = User::where('id', $id)
->whereNotNull('national_id')
->first();
if($national){
$verified = true;
}
$user= User::where('id', $id)->first(['id', 'name', 'phone', 'work', 'address']);
$user['verified'] = $verified;
Но я думаю, что это не совсем чисто и я не хочу использовать два запроса для простых данных JSON, есть ли способ сделать это с одним запросом, а не с двумя?