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

在Elount pivot的额外列上连接第三个表

梁烨
2023-03-14

我有三张桌子:

用户id、名称

订单id,日期

状态id,名称

并将透视表定义为:

order_userorder_idstatus_iduser_idcreated_at

所以“user_id”是pivot中的一个额外列。

我的订单型号有:

public function statuses(){
    return $this->belongsToMany('Status')->withPivot('user_id')->withTimestamps(); 
    }

我可以通过以下方式访问用户id:

Order::find(1)->statuses->pivot->user_id

但无法计算如何获取用户“名称”?

我是否可以在订单模型的“statuses()”方法返回中以某种方式“LEFT JOIN”用户表?

谢谢Y

共有1个答案

胥诚
2023-03-14

这是一个有效的解决方案(尽管我相信它可以以更优雅/更有说服力的方式完成)

我将订单模型更新为:

public function statuses(){
    return $this->belongsToMany('Status')
        ->select(array('*','users.name as username'))
        ->join('users','order_user.user_id','=','users.id')
        ->withTimestamps();
    }

现在我可以:

foreach ($order->statuses as $status) { 
    echo "statusname: ".$status->name.
         "username:".$status->username;
    }

仍在寻找更好的解决方案,如果有的话...

问题:有人知道如何在我的JOIN子句中自动引用透视表吗?(而不是写:“订单\用户”)

布里

 类似资料:
  • 我有3个CSV文件。每个数据框都有第一列作为人的(字符串)名称,而每个数据框中的所有其他列都是该人的属性。 如何将所有三个CSV文档“连接”在一起,创建一个单个CSV,每行都具有该人字符串名称的每个唯一值的所有属性? Pandas中的函数指定我需要一个多索引,但是我对分层索引方案与基于单个索引进行连接有什么关系感到困惑。

  • 问题内容: 我是使用DataFrame的新手,我想知道如何在一系列表的多个列上执行等效于左外部联接的SQL 例: 本质上,我想做类似以下SQL代码的操作(注意df3在Year上没有加入): 结果应如下所示: 我曾尝试使用合并和联接,但无法弄清楚如何在多个表上以及涉及多个联接时执行此操作。有人可以帮我吗? 谢谢 问题答案: 合并他们在两个步骤,和第一,然后那到结果。 我从df3删除了year,因为您

  • 注意:我已经查看了文件的十六进制,没有什么不合适的

  • 如果我有三个表: > 列出所有未被查看的正确方法是什么?此查询是否正确? 按< code>user_id列出所有< code >帖子及其“查看状态”如何? 您是否也可以推荐一个很棒的(用户友好的、非极客的)资源来提高我对LEFT JOIN、CROSS JOIN和(正常连接?从帖子、视图中选择*)的理解? 谢谢大家!

  • 问题内容: 我观察到有两种方法可以在多个表上实现目标。结果集中的一列将被更新,并且可能需要速度。结果集可以通过以下方式获得: 情况1: 或者 情况2: 两者给出的结果相同,只是连接条件有所不同。哪个运行/执行速度更快? eval_id为,report_type和course_name为。 对于所使用的开发人员,情况1具有以下统计信息:[SELECT-3077行,0.048秒]提取了结果集…执行了1

  • 我有三张桌子,桌子A,桌子B和桌子C 我想将数据从TableA列DateA迁移到TableB列DateB,仅当表B中的date字段为空时(我不想覆盖任何现有数据) 我需要使用TableC连接TableA和TableB,以匹配应按其RobotNumber更新的A行和B行。 表格a 表格c 我尝试连接这些表并执行如下更新,但查询超时: