Laravel Eloquent 与 find

问题描述 投票:0回答:4

为什么这不起作用?

Article::with('category')->find($ids)

我遇到了数组到字符串转换异常。

但是如果我将查询分成两部分,如下所示:

$articles = Article::with('category')

$articles = $articles->find($ids)

我没有遇到任何异常,结果是正确的。

laravel eloquent
4个回答
52
投票

仅供子孙后代...您可以这样做的其他方法是:

Article::with('category')->whereIn('id', $ids)->get();

这应该更快,因为它将查询留给数据库管理器


22
投票

尝试:

Article::with('category')->get()->find($ids);

我相信你需要先获取文章,然后才能调用 find() 。

警告:这会从数据库中检索每一篇文章并将它们全部加载到内存中,然后从所有数据中仅选择一篇并将其返回。 这可能不是您想要处理这个问题的方式。


10
投票

这将为您提供基于 ID 数组的结果

Article::whereIn('id', $ids)->with('category')->get();

-2
投票

创建对象并通过关系设置其属性

例如,控制器或服务中的代码

$article = new Article;
$article = $article->find($id);

$result->article = $article;
$result->article->category = $article->category;

return response()->json($result);

模型中的代码

public function category() {
    return $this->hasOne('App\Category');
}
© www.soinside.com 2019 - 2024. All rights reserved.