[英]Laravel / Eloquent eager loading
对于某些人来说,这将是一个简单的问题,但是我似乎无法在线或在文档中找到答案(仅是我不想要的变体)。
Question
类 Question
对象可以选择具有多个Tag
我已经设置好了类,并且一切正常。 目前,我使用:
$questions = Question::all();
这可以按预期工作,但是不急于加载。
需要明确的是: $question->tags
提供了我期望的数组。 没有关系问题。
由于新的要求,我将创建一个可能包含成千上万个问题的视图,因此必须急于加载。
我尝试使用:
$questions = Question::with('tag')->all();
给出错误信息:
Builder.php第2345行中的BadMethodCallException:调用未定义的方法Illuminate \\ Database \\ Query \\ Builder :: all()
每个教程或我谷歌渴望加载的方法,要么指定一个ID,要么是有关如何仅显示带孩子的父母的教程。
我简单地想要“所有人和他们的孩子”。
这必须很容易..有人知道怎么做吗?
谢谢里克
您应该在模型中定义方法。 据我所知,您将有一对多的关系。 那将是
class Question extends Model
{
public function tags()
{
return $this->hasMany('App\Tag');
}
}
标签类别
class Tag extends Model
{
public function question()
{
return $this->belongsTo('App\Question');
}
}
和控制器。 代替all()
使用get()
方法。
$questions = Question::with('tags')->get();
正如我在Question
模型中定义tags
方法一样。 Question::with('tags')
应该调用它。 相反,如果您要执行Question::with('tag')
,则应该在Question
模型中定义tag
方法。
注意s
我已经将两个答案都标记为正确:建议的原始语法正确,而引起的类名问题是最后一个问题。 谢谢大家:
$questions = Question::with('tags')->get();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.