如何使用 eloquent / etc 与 laravel 编写关系函数?
Posted
技术标签:
【中文标题】如何使用 eloquent / etc 与 laravel 编写关系函数?【英文标题】:how to write function in relationship using eloquent / etc with laravel? 【发布时间】:2022-01-16 15:32:38 【问题描述】:$data = Program::with('peserta', function ($query)
return $query->peserta()->whereBetween('tanggal', array($request->from, $request->until));
)->get();
此代码返回错误:
mb_strpos() 期望参数 1 是字符串,给定对象", 异常:“ErrorException”。
帮助。谢谢
【问题讨论】:
尝试 $data = Program::with('peserta', function ($query)use($request) return $query->whereBetween('tanggal', array($request->from , $request->until)); )->get(); 【参考方案1】:with()
中的闭包函数必须是数组并删除该return
。 Example in laravel doc
$data = Program::with(['peserta' => function ($query) use($request)
$query->whereBetween('tanggal', array($request->from, $request->until));
])->get();
【讨论】:
感谢先生的解释。我忘了检查文档 @FebriTahta 不客气【参考方案2】:你应该使用 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()
【讨论】:
谢谢先生。我尝试使用此代码,它也可以工作以上是关于如何使用 eloquent / etc 与 laravel 编写关系函数?的主要内容,如果未能解决你的问题,请参考以下文章
我收到此错误:类 Illuminate\Database\Eloquent\Builder 的对象无法在 laravel ORM 中转换为字符串
如何使用 Laravel 的 Eloquent 关系与 Eager Loading 连接 3 个表?
Laravel 6,MYSQL - 如何使用 Laravel Querybuilder 或 Model Eloquent 将子查询与 GroupBY 左连接?