Почему при использовании команды find / findmany система lumen / laravel выдает ошибку «Передано слишком мало аргументов»? - PullRequest
1 голос
/ 31 января 2020

У меня есть массив идентификаторов, которые я хочу использовать для получения соответствующих записей из таблицы. Код выглядит так:

$res = Extensiontables_Registry::findmany($ids[0])->get();

Полный контекст выглядит следующим образом:

  public function getData(Request $request){
    $ad_groupsOfUser = $this->getRoles($request);
    $ids = $ad_groupsOfUser->pluck('id');

    $res = Extensiontables_Registry::findmany($ids[0])->get();

    return response()->json($res, 200);
  }

  public function getRoles(Request $request)
  {
    $ad_groups = Ad_user::find($request->decodedToken->user_id)->ad_groups()->get();

    //return response()->json($roles, 200);
    return $ad_groups;
  }

$ ids определенно является массивом и содержит значения, я его отладил. Но почему он не работает с find / findmany? Это полная ошибка, которую я получаю:

 (1/1) ArgumentCountError

Too few arguments to function Illuminate\Support\Collection::get(), 0 passed in E:\aether-backend\app\Http\Controllers\UserController.php on line 49 and at least 1 expected

Ответы [ 3 ]

2 голосов
/ 31 января 2020

Используйте whereIn() метод: отметьте здесь

$res = Extensiontables_Registry::whereIn('id',$ids)->get(); //$ids = [1,2,3,...]
1 голос
/ 31 января 2020

Вы можете использовать find вместо findMany.

Так как вы пытаетесь получить один данные. Хороший подход - использовать метод whereIn.

public function getData(Request $request){
    $adGroupsOfUser = $this->getRoles($request);
    $ids = $adGroupsOfUser->pluck('id');

    $response = Extensiontables_Registry::whereIn($ids->toArray())->get();

    return response()->json($response, 200);
  }
1 голос
/ 31 января 2020

Как только вы используете find, он выбирает данные для вас. get () используется после предложения where

Model::find();

Model::where(['key' , 1])->get();
...