[英]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.