Laravel雄辩并发现

Mar*_*rco 35 laravel eloquent

为什么这不起作用?

Article::with('category')->find($ids)
Run Code Online (Sandbox Code Playgroud)

我有一个数组到字符串转换异常.

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

$articles = Article::with('category')
Run Code Online (Sandbox Code Playgroud)

$articles = $articles->find($ids)
Run Code Online (Sandbox Code Playgroud)

我没有得到任何例外,结果是对的.

dan*_*i24 33

只为后代...你可以这样做的另一种方式是:

Article::with('category')->whereIn('id', $ids)->get();
Run Code Online (Sandbox Code Playgroud)

这应该更好(更高性能),因为它将查询留给数据库管理器

  • 我宁愿使用``->first();`` 而不是``->get();``。第一个将返回预期的文章,而第二个将返回集合。 (2认同)

Hal*_*zed 16

尝试:

Article::with('category')->get()->find($ids);
Run Code Online (Sandbox Code Playgroud)

你需要先得到文章才能调用find()我相信.

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

  • 不,不要那样做!这将从数据库中检索每篇文章(!),然后只返回与“$ids”匹配的文章(顺便说一下,应该称为“$id”,因为它必须是单个值,而不是数组! )。请参阅已接受的答案。 (2认同)

Ada*_*dam 5

这将根据Laravel 4中的一系列ID为您提供结果

Article::whereIn('id', $ids)->with('category')->get();
Run Code Online (Sandbox Code Playgroud)