【问题标题】:How to take users from collection?如何从收藏中获取用户?
【发布时间】:2020-08-20 11:30:50
【问题描述】:

我有一些类似下面的代码

$journey = Journey::find($id);
$users = $journey->users()->whereHas('user',function ($query) use ($search) {
                $query->where('first_name', 'LIKE', "%{$search}%");
             })
             ->orderBy($sort, $order)
             ->paginate($limit);

我想用get方法做​​如下;

$journeys = Journey::where('id',$id)->orWhere('duplicated_id',$id)->get();
$users = $journeys->users()->whereHas('user',function ($query) use ($search) {
                $query->where('first_name', 'LIKE', "%{$search}%");
            })
            ->orderBy($sort, $order)
            ->paginate($limit);

如何通过分页从上述集合中获取用户?

【问题讨论】:

    标签: laravel eloquent laravel-7


    【解决方案1】:

    你可以这样做,

    $journeyIds = Journey::where('id',$id)->orWhere('duplicated_id',$id)->pluck('id');
    $userids = UserJourney::whereIn('journey_id',$journeyIds)->pluck('user_id');
    $users = User::whereIn('id',$userids)
                    ->where('first_name', 'LIKE', "%{$search}%")
                    ->orderBy($sort, $order)
                    ->paginate($limit);
    

    【讨论】:

      【解决方案2】:

      使用此代码

      $journeyIds = Journey::where('id',$id)->orWhere('duplicated_id',$id)->pluck('id');
      $users = User::whereHas('user',function ($query) use ($search) {
                  $query->where('first_name', 'LIKE', "%{$search}%");
              })
              ->whereIn('journey_id', $journeyIds) // <<-- your correct row
              ->orderBy($sort, $order)
              ->paginate($limit);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-18
        • 2018-09-10
        • 2016-03-03
        • 2012-05-29
        • 2019-03-26
        • 1970-01-01
        相关资源
        最近更新 更多