【问题标题】:how to write function in relationship using eloquent / etc with laravel?如何使用 eloquent / etc 与 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();

标签: php laravel eloquent


【解决方案1】:

with() 中的闭包函数必须是数组并删除该returnExample 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()

【讨论】:

  • 谢谢先生。我尝试使用此代码,它也可以工作
猜你喜欢
  • 2021-03-20
  • 2020-03-25
  • 2016-11-21
  • 1970-01-01
  • 2014-02-01
  • 2021-07-04
  • 2020-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多