API работает только в одном условии - используя laravel - PullRequest
1 голос
/ 23 мая 2019

Я создаю API, мой код контроллера:

public function isUserGroup(Request $request)
{
    $id = $request->input('id');
    $isGroup = $request->input('isGroup');

    if($isGroup == false)
    {
        $users = DB::table('users')
            ->join('user_basic_info','users.id','=','user_basic_info.user_id')
            ->select('users.id','user_basic_info.first_name as name')
            ->where('users.id',$id)->get();
        $resultArray['users'] = $users;
    }

    if ($isGroup == true)
    {
        $groups = DB::table('group')   // Only this is working
            ->select('group.id','group.name')
            ->where('group.id',$id)->get();
        $resultArray['group'] = $groups;
        return \Illuminate\Support\Facades\Response::json($resultArray, 200);
    }
}

Теперь здесь возвращаются только сведения о группе, либо я ставлю условие isGroup false, либо true, только возвращая сведения о группах. Я не знаю, где я не прав.

Ваша помощь будет высоко оценена!

Ответы [ 3 ]

0 голосов
/ 23 мая 2019

сначала измените isGroup на:

$isGroup = $request->input('isGroup') ? true : false;

, затем измените == на ===, и у вас есть другие проблемы с кодом.Должно быть так:

if($isGroup === false)
{
    $users = DB::table('users')
        ->join('user_basic_info','users.id','=','user_basic_info.user_id')
        ->select('users.id','user_basic_info.first_name as name')
        ->where('users.id',$id)->get();
    $resultArray['users'] = $users;
}else if ($isGroup === true)
{
    $groups = DB::table('group')   // Only this is working
        ->select('group.id','group.name')
        ->where('group.id',$id)->get();
    $resultArray['group'] = $groups;
}
    return \Illuminate\Support\Facades\Response::json($resultArray, 200);

, если все еще не работает, возможно, ваш ввод isGroup неверен, если ввод представляет собой строку 'false', вернет true.Поэтому, если вы хотите вернуть пользователей, вы должны очистить ввод isGroup.

альтернатива, если ваш ввод - строка ниже:

 $isGroup = $request->input('isGroup');
    if($isGroup == 'false')
    {
        $users = DB::table('users')
            ->join('user_basic_info','users.id','=','user_basic_info.user_id')
            ->select('users.id','user_basic_info.first_name as name')
            ->where('users.id',$id)->get();
        $resultArray['users'] = $users;
    }else if ($isGroup == 'true')
    {
        $groups = DB::table('group')   // Only this is working
            ->select('group.id','group.name')
            ->where('group.id',$id)->get();
        $resultArray['group'] = $groups;
    }
        return \Illuminate\Support\Facades\Response::json($resultArray, 200);
0 голосов
/ 23 мая 2019

Вам необходимо проверить тип данных.

Попробуйте:

$isGroup = $request->input('isGroup');
var_dump($isGroup); // this will tell you type of data.

Если вы уверены в типе, вы можете продолжить.

0 голосов
/ 23 мая 2019

Измените строку следующим образом:

$isGroup = $request->input('isGroup') ? true : false;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...