在laravel中多次查询同一张表

时间:2020-05-21 16:39:09

标签: laravel eloquent eloquent-relationship

我是学习laravel的初学者,遇到了一个奇怪的问题。我希望一个表两次引用相同的查找表。例如,如果我有一个消息表,该表存储两个用户之间的消息。

如果我的邮件表结构如下:

  • id-无符号(自动递增pk)
  • 消息-字符串
  • user1_id-未签名
  • user2_id-未签名

我应该如何设置消息和用户模型,以便在显示消息索引时显示用户表中user1和user2的user.email?

如果每封邮件只有1个用户,我可以将列命名为“ user_id”,然后与users表建立一个belongsTo关系。

似乎可能涉及使用$ appends属性,但是在查询message表并将消息消息数据一起发送时,应该如何配置东西来检索2个用户的电子邮件地址?

1 个答案:

答案 0 :(得分:0)

有人在laracasts论坛上为我提供了帮助,我认为我会在此处发布答案,以防它有所帮助。

答案是在消息模型中建立其他关系。喜欢:

公共函数userOne(){

  return $this->belongsTo('App\User', 'user1');

}

公共函数userTwo(){

  return $this->belongsTo('App\User', 'user2');

}

然后在视图中,假设您将消息作为$ messages传递,在foreach $ messages作为$ message循环中,使用optional()帮助器获取如下数据:

{{可选($ message-> userOne)->电子邮件}}