【问题标题】:laravel | query returns a collection of all records even when using find拉拉维尔 |即使使用 find,查询也会返回所有记录的集合
【发布时间】:2017-05-15 13:21:24
【问题描述】:

我试图在急切加载时获取关系中的废弃记录,但是我返回了所有记录,而不是带有相应 id 的记录

这是有问题的查询,

$collections = User::findOrFail($id->id)->with(['collection' => function ($query) {
$query->where('created_at', '>=', Carbon::today())->with(['loan' => function ($query) {
$query->withTrashed()->with(['customer' => function ($query) {
$query->withTrashed();
}]);
}]);
}])->get();

这给了我这样的结果

Collection {#257 ▼
  #items: array:2 [▼
    0 => User {#265 ▶}
    1 => User {#266 ▶}
  ]
}

这里出了什么问题?

【问题讨论】:

  • 尝试在`findorfail`之前制作with(...)
  • 什么是$id?它是实际的 id 还是一个对象?
  • @Tim $id 是一个对象 $id->id 指的是实际的id
  • 我不是专家,但您可以尝试使用 first() 而不是 get() 获取吗?

标签: mysql laravel eloquent laravel-5.4


【解决方案1】:

您应该在findOrFail 之前执行with,但是两者并不是真正兼容的东西。请改为执行以下操作:

$collections = User::with(['collection' => function ($query) {
    $query->where('created_at', '>=', Carbon::today())->with(['loan' => function ($query) {
            $query->withTrashed()->with(['customer' => function ($query) {
                    $query->withTrashed();
                }]);
        }]);
}])->where("id",$id->id)->firstOrFail();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多