当前位置: 首页 > 知识库问答 >
问题:

Laravel和ELOQUENT:在检索相关项时指定中的列

钦海荣
2023-03-14

这是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表中获取firstnamelastname列,从Instruments表中获取name列?

共有1个答案

穆智刚
2023-03-14

不知道我在想什么。我想在这方面工作这么久让我很生气。

不管怎样,我对此进行了更多的研究,并寻找答案,最后在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'));

<罢工> 这给了我我想要的,这是一个艺术家的集合,只包含 firstnamelastname来自 艺术家表和 名称列,用于从 仪器

 类似资料:
  • > 在我的视图中,我可以输出,如下所示: 我可以遍历,比如: 但是是否可以迭代(我知道只有一个-- ,请参见#2),并且对于每个迭代他们的? 我想我的模特关系中有什么不对劲的地方。我还尝试用在Artist.php中定义关系(我认为说“每个艺术家都有许多乐器”更有意义,但这给了我一个错误,因为它需要一个名为的表,而且它还试图检索该表中不存在的列(比如)。

  • 地址 我尝试过的事情 这只返回用户数据-没有地址数据

  • 但是,它没有从地址表返回正确的。我怎么能那么做? 这是我得到的错误消息:

  • 问题内容: 当我使用以下语法删除一行时: 有没有一种方法可以附加各种回调,以便例如自动执行此操作: 最好在模型类内部。 问题答案: 我相信这是Eloquent事件的完美。您可以使用“删除”事件进行清理: 您可能还应该将整个内容放入事务中,以确保引用完整性。

  • 问题内容: 使用Laravel 4,我有以下模型和关系:具有多记录的事件具有多项目的事件。我想做的是这样的 原因是无效的,因为Eloquent在检索记录时不会将模型联接在一起。因此,如何在不自己编写SQL的情况下解决这个问题(我想避免使用分页,但要避免这种情况)。 问题答案: 您想要的是渴望加载。 如果要指定其他约束,它的工作原理如下:

  • 考虑到Laravel指南中的基本示例有许多通过关系,我试图直接查询雄辩的、帖子类型为100的国家(只是一个例子)。 type_id是我的特例... 因此,我在country模型中创建了一个关系,通过用户创建了与帖子的关系。我想要实现的结果是列出一个国家,以及每个国家内由该国用户创建的帖子。 我能够以其他方式复制我想要实现的结果,但是我想知道为什么下面雄辩的查询没有返回预期的结果: 查询的返回是几个