Laravel雄辩并发现

时间:2013-05-31 18:55:50

标签: laravel eloquent

为什么这不起作用?

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

我有一个Array to String Conversion Exception。

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

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

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

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

4 个答案:

答案 0 :(得分:30)

仅仅为了后人......你能做到的其他方式是:

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

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

答案 1 :(得分:16)

尝试:

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

您需要先获取文章才能调用find()我相信。

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

答案 2 :(得分:5)

这将根据Laravel 4

中的一系列ID为您提供结果
Article::whereIn('id', $ids)->with('category')->get();

答案 3 :(得分:-1)

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

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

$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');
}