为什么在使用find / findmany时流明/ laravel抛出错误“传递的参数太少?”

问题描述 投票:0回答:3

我有一个ID数组,我想使用它们从表中获取匹配的记录。代码看起来像这样:

$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
php laravel eloquent lumen
3个回答
0
投票

一旦使用查找,它就会为您获取数据。 get()在where子句之后使用

Model::find();

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

0
投票

您可以使用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);
  }

0
投票

->get()是雄辩/查询生成器的方法,用于将数据取出并进行收集。

但是,findMany已经获取数据作为集合,您不需要使用->get()方法。

所以您只需删除->get()方法。

$res = Extensiontables_Registry::findmany($ids[0]);
© www.soinside.com 2019 - 2024. All rights reserved.