我有两张桌子,UserPost.一个User可以有多个posts,一个post只属于一个user.

在我的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()的特定列.我该怎么做?

推荐答案

我找到了解决办法.它可以通过在with()中传递一个closure函数作为数组的第二个索引来实现

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

它将只从其他表中 Select idusername.我希望这能帮助其他人.


请记住,在这一点上, $query->select()以实际检索必要的结果.*

Php相关问答推荐

未在moodle上运行的计划任务

RediSearch PHP希望我在每次使用时定义所有字段

使用正则表达式搜索两个子字符串(没有重叠/共享字符)

EBay Inventory API createOrReplaceInventoryItem出错

为什么在我的PHP联系人脚本中开机自检后出现未定义变量错误?

PHP空数组定义与开始或结束逗号

Select 本地提货时隐藏WooCommerce显示的发货成本

WooCommerce中特定付款方式的变更订单预留库存时间

未定义的类型';PDF';在Laravel 8

显示 woocommerce 中所选变体的属性术语描述

有没有办法获取触发流操作的页面的 URI?

将产品数量、名称和结帐链接添加到 WooCommerce 添加到购物车消息

当我激活插件时出现错误注意:未定义的偏移量:1

PHP文件如何从CSS执行

Laravel的Storage::exists返回false,而file_exists返回true.

如何在 Laravel 中修改嵌套数组的键?

如何使用 WhatsApp Cloud API 向 WhatsApp 发送消息,而无需在发送消息之前注册收件人号码?

如何修复正则表达式以在换行符后查找非数值

为什么在解压缩具有混合字符串和 int 键的关联数组时出现错误消息无法使用位置参数...?

Symfony 自定义注销