elb*_*8rm 1 php laravel eloquent
对于某些人来说,这将是一个简单的问题,但我似乎无法在网上或文档中找到答案(只有我不想要的变体)。
Question堂课Question对象可以选择有多个Tags我已经设置了课程,一切都按预期进行。目前我使用:
$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');
}
}
Run Code Online (Sandbox Code Playgroud)
标签类
class Tag extends Model
{
public function question()
{
return $this->belongsTo('App\Question');
}
}
Run Code Online (Sandbox Code Playgroud)
还有控制器。而不是all()使用get()方法。
$questions = Question::with('tags')->get();
Run Code Online (Sandbox Code Playgroud)
正如我tags在模型中定义的方法Question。Question::with('tags')应该称呼它。相反,如果你打算这样做Question::with('tag'),tag方法应该在Question模型中定义。
注意s