这是Laravel4和ELOQUENT的后续帖子:检索所有记录和所有相关记录
$artists = Artist::with('instruments')->get();
return \View::make('artists')->withArtists($artists);
$artists = Artist::get();
$artists = Artist::select('firstname', 'lastname', 'instruments.name')->get();
$artists = Artist::with(array('instruments' => function($query) {
$query->select('name');
}))->get();
(正如这里所建议的,虽然这不会引发错误,但它也不会将列限制为仅指定的列)
或在artist.php中:
return $this->belongsToMany('App\Models\Instrument')->select(['name']);
如何从Artists
表中获取firstname
和lastname
列,从Instruments
表中获取name
列?
不知道我在想什么。我想在这方面工作这么久让我很生气。
不管怎样,我对此进行了更多的研究,并寻找答案,最后在GitHub上发布了一个问题。
归根结底,在Laravel V4.1中,这是不可能的。
public function instruments() {
return $this->hasMany('App\Models\Instrument', 'id');
}
在ArtistsController.php中,我做了以下工作:
$artists = Artist::with(array(
'instruments' => function($q) {
$q->select('instruments.id', 'name');
})
)->get(array('id', 'firstname', 'lastname'));
<罢工> 这给了我我想要的,这是一个艺术家的集合,只包含 firstname
和 lastname
来自 艺术家
表和 名称
列,用于从 仪器
。
> 在我的视图中,我可以输出,如下所示: 我可以遍历,比如: 但是是否可以迭代(我知道只有一个-- ,请参见#2),并且对于每个迭代他们的? 我想我的模特关系中有什么不对劲的地方。我还尝试用在Artist.php中定义关系(我认为说“每个艺术家都有许多乐器”更有意义,但这给了我一个错误,因为它需要一个名为的表,而且它还试图检索该表中不存在的列(比如)。
地址 我尝试过的事情 这只返回用户数据-没有地址数据
但是,它没有从地址表返回正确的。我怎么能那么做? 这是我得到的错误消息:
问题内容: 当我使用以下语法删除一行时: 有没有一种方法可以附加各种回调,以便例如自动执行此操作: 最好在模型类内部。 问题答案: 我相信这是Eloquent事件的完美。您可以使用“删除”事件进行清理: 您可能还应该将整个内容放入事务中,以确保引用完整性。
问题内容: 使用Laravel 4,我有以下模型和关系:具有多记录的事件具有多项目的事件。我想做的是这样的 原因是无效的,因为Eloquent在检索记录时不会将模型联接在一起。因此,如何在不自己编写SQL的情况下解决这个问题(我想避免使用分页,但要避免这种情况)。 问题答案: 您想要的是渴望加载。 如果要指定其他约束,它的工作原理如下:
考虑到Laravel指南中的基本示例有许多通过关系,我试图直接查询雄辩的、帖子类型为100的国家(只是一个例子)。 type_id是我的特例... 因此,我在country模型中创建了一个关系,通过用户创建了与帖子的关系。我想要实现的结果是列出一个国家,以及每个国家内由该国用户创建的帖子。 我能够以其他方式复制我想要实现的结果,但是我想知道为什么下面雄辩的查询没有返回预期的结果: 查询的返回是几个