如何使用 eloquent / etc 和 laravel 编写关系函数?

how to write function in relationship using eloquent / etc with laravel?

$data = Program::with('peserta', function ($query) {
                return $query->peserta()->whereBetween('tanggal', array($request->from, $request->until));
            })->get();

此代码return错误:

mb_strpos() expects parameter 1 to be string, object given", exception: "ErrorException".

求助。谢谢

with() 中的闭包函数必须是数组并删除 returnExample in laravel doc

$data = Program::with(['peserta' => function ($query) use($request) {
                $query->whereBetween('tanggal', array($request->from, $request->until));
            }])->get();

您应该使用 whereHas 设置关系条件:

$data = Program::whereHas('peserta', function ($query)use($request) {
     return $query->whereBetween('tanggal', array($request->from, $request->until));
 })->get()

如果您需要关系数据,应将 'with' 添加到查询中:

$data = Program::whereHas('peserta', function ($query)use($request) {
     return $query->whereBetween('tanggal', array($request->from, $request->until))->with('peserta');
  })->get()