簡體   English   中英

Laravel Eloquent 獲取每 n 個關系

[英]Laravel Eloquent get every nth of relation

我正在查詢模型中的關系,但由於我想將關系返回的行數限制為一組數字(在此示例中為 18),因此我已經映射了該關系。

$sensors = Sensor::where('building_id', $request->building_id)->with('data_sensor')->get()->map(function($sensor) {
      $sensor->setRelation('data_sensor', $sensor->data_sensor->sortByDesc('created_at')->take(18)->values());
      return $sensor;
});

這工作正常。 但是,我試圖獲取我關系的每第 n 行,在此示例中,我想要每第 6 行。

我已經嘗試了以下(添加 whereRaw),但這給出了 whereRaw 方法不存在的錯誤。

$sensors = Sensor::where('building_id', $request->building_id)->with('data_sensor')->get()->map(function($sensor) {
      $sensor->setRelation('data_sensor', $sensor->data_sensor->sortByDesc('created_at')->whereRaw( DB::raw('(`id`) % 6 != 0') )->take(18)->values());
      return $sensor;
});

我怎樣才能得到我的關系的每 n 個,有一個限制,這樣它就不會返回關系的所有行?

您正在嘗試在集合中使用 querybuilder 方法,這就是錯誤的原因。

嘗試這個:

        $sensors = Sensor::where('building_id', $request->building_id)
        ->with('data_sensor')
        ->get()
        ->map(function($sensor) {
            $sensor->setRelation(
                'data_sensor', 
                $sensor->data_sensor->sortByDesc('created_at')->filter(function($s) { return $s->id % 6 != 0; })->take(18)->values());
            return $sensor;
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM