【问题标题】:Laravel 8 | How to join two foreign keys on the same tableLaravel 8 |如何在同一张表上连接两个外键
【发布时间】:2021-03-17 16:21:36
【问题描述】:

字段 'to_user_id''from_user_id' 是 users 表上的两个 id,因为它们具有不同的值,如何将我的模型“消息”与用户表

   $my_inbox=Message::select('messages.*', 'users.name toUser', 'users.name as fromUser')
            ->join('users', 'users.id', '=', 'to_user_id.user_id')
            ->join('users', 'users.id', '=', 'from_user_id.user_id')
            ->get();

【问题讨论】:

  • 尝试以下操作: ->join('users as u1', 'u1.id', '=', 'to_user_id.user_id') ->join('users as u2' , 'u2 .id', '=', 'from_user_id.user_id')
  • 如@Abdel-azizhassan 所示,您需要设置不同的别名才能加入同一个表。

标签: php jquery laravel orm


【解决方案1】:

使用不同的别名来连接同一个表。您会看到选择相同的字段与您想要的有冲突。

$my_inbox=Message::select('messages.*', 'receiver.name toUser', 'sender.name as fromUser')
            ->join('users as receiver', 'receiver.id', '=', 'to_user_id.user_id')
            ->join('users as sender', 'sender.id', '=', 'from_user_id.user_id')
            ->get();

或者如果您在 Message 类和用户类中设置了正确的关系

$my_inbox = $loggedUser->receivedMessages()->with('sender')->get();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多