Я получаю возврат массива в get () в select laravel 5.6

#php #laravel #laravel-5 #laravel-5.6

#php #laravel #laravel-5 #laravel-5.6

Вопрос:

Когда я запускаю это:

  $User_data = User::where('email', '=', $email)
            ->leftJoin('secutitequestion', function($join) {
                $join->on('users.id', '=', 'secutitequestion.user_id');
            })
            ->select('secutitequestion.securite_question1'
                ,'secutitequestion.securite_question2'
                ,'secutitequestion.securite_question3'
            ,'secutitequestion.user_id')
            ->get();
  

Я получаю этот результат:

 {
    "success": true,
    "token": null,
    "user": [
        {
            "securite_question1": "what is your dream",
            "securite_question2": "other dream?",
            "securite_question3": "any other dream?",
            "user_id": 32
        }
    ]
}
  

Но я хочу, чтобы это было так:

 {
    "success": true,
    "token": null,
    "user": {
        "securite_question1": "what is your dream",
        "securite_question2": "other dream?",
        "securite_question3": "any other dream?",
        "user_id": 32
    }
}
  

Комментарии:

1. Вы можете использовать first(); вместо ->get();

Ответ №1:

  $User_data = User::where('email', '=', $email)
            ->leftJoin('secutitequestion', function($join) {
                $join->on('users.id', '=', 'secutitequestion.user_id');
            })
            ->select('secutitequestion.securite_question1'
                ,'secutitequestion.securite_question2'
                ,'secutitequestion.securite_question3'
            ,'secutitequestion.user_id')
            ->first();  //<-- this is the change
  

Это решит вашу проблему. Он вернет 1 одномерный массив