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

使用Laravel口才中的“with()”函数获取特定列

梅耘豪
2023-03-14

我有两个表,userpost。一个用户可以有多个帖子并且一个帖子只属于一个用户

在我的user模型中,我有一个hasmany关系...

public function post(){
    return $this->hasmany('post');
}

在我的post模型中,我有一个belongsto关系...

public function user(){
    return $this->belongsTo('user');
}

现在,我想使用Eloquent with()来连接这两个表,但需要第二个表中的特定列。我知道我可以使用查询生成器,但我不想这样做。

当我在post模型中编写...

public function getAllPosts() {
    return Post::with('user')->get();
}

它将运行以下查询...

select * from `posts`
select * from `users` where `users`.`id` in (<1>, <2>)

但我想要的是...

select * from `posts`
select id,username from `users` where `users`.`id` in (<1>, <2>)

当我用...

Post::with('user')->get(array('columns'....));

它只返回第一个表中的列。我需要使用第二个表中的with()的特定列。我怎么能那样做?

共有1个答案

闾丘高峰
2023-03-14

我找到了解决办法。可以通过在中使用()传递闭包函数作为数组的第二个索引来实现

Post::query()
    ->with(array('user' => function($query) {
        $query->select('id','username');
    }))
    ->get();

它将只从其他表中选择IDusername。我希望这能帮助到别人。

请记住,主键(在本例中为id)需要是$query->select()中的第一个param,以实际检索必要的结果。*

 类似资料:
  • 问题内容: 我有两个表,和。一个可以有许多,一个只能属于一个。 在我的模型中,我有一个关系… 在我的模型中,我有一个关系… 现在,我想使用来连接这两个表,但是想要第二个表中的特定列。我知道我可以使用查询生成器,但我不想这样做。 当我在模型中写… 它运行以下查询… 但是我想要的是… 当我使用… 它仅返回第一个表中的列。我想使用第二个表中的特定列。我怎样才能做到这一点? 问题答案: 好吧,我找到了解决

  • 问题内容: 我想要Excel中特定行的列数。那怎么可能?我使用了POI API 但是我只能得到7的列数。 我希望特定行号的列数为10。excel列不一样 问题答案: 您可以做两件事 用 要么 他们之间有很好的区别 选项1给出实际填充内容的列数(如果10列的第二列未填充,您将得到9) 选项2仅给您最后一列的索引。因此完成了“ getLastCellNum()”

  • 我想从这个代码中得到的数组中得到一个特定的数组数据: 结果是: 数组(1){[“用户”]= 我想得到的是用户名值,我尝试过这样的解决方案: 但它给了我这样的错误: 正在尝试获取非对象的属性“username” 如何解决这个问题?谢谢你的关注。

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

  • 在我们的应用程序中,我们有CDI(@Application ationScoped注释)和EJB(@无状态注释)bean,其结构如下: 我使用下面的方法获取应用程序中实现MyInterface的所有bean(CDI和EJB): 在这里,我看到了两件奇怪的事情: 我只得到CDI豆,没有EJB豆。 当创建直接实现MyInterface接口的EJB bean时,不扩展MyAbstractClass,比在