【问题标题】:Multiple Foreign Key from the same table来自同一个表的多个外键
【发布时间】:2020-07-24 12:40:12
【问题描述】:

我有一个带有 MySQL 数据库的 Laravel 应用程序,它有 3 个表:PublicationCommentUser

当我向用户显示出版物时,我调用 WS GET Publication By IdWP GET Comment By Publication Id 来显示与该出版物相关的所有 cmets。

我想知道是否有办法避免为每个评论调用WP GET User By Comment Id,因为当我显示评论时,我还需要为评论的用户显示一些信息。

我可以在表Comment 中添加多个用户外键并使用它们吗?

提前致谢。

【问题讨论】:

标签: mysql laravel eloquent


【解决方案1】:

这是一个非常通用的用例。你能看看这是否回答了你的问题。

Publication model{
whatever fields you have,
//Comments --> One to many relation with Comment model
 public function comments()
 {
     return $this->hasMany('App\Comment');
 } 
}

Comment Model{
whatever fields you have,
//User --> One to one relation with User model
 public function user()
 {
     return $this->hasOne('App\User');
 }
}

User Model{
fields...
}

在您的控制器中,您可以使用 with 函数获取与 cmets 和 users 的发布。

$pub = Publication::first()->with('comments.user');

我希望这会有所帮助。

【讨论】:

  • 桑托什 感谢您的帮助!但这不是问题,我希望我只调用 Web 服务来发布和 Web 服务只获取一次 cmets,并且在评论下显示用户信息不必为每个评论调用与评论相关的用户 Web 服务,希望它更多清除 ?谢谢
  • 我们谈论的是同一件事。您需要在 thr 模型中定义关系,并在控制器中使用 load 或 with 函数来获取相关字段。我从评论中看到您得到了相同的解决方案。
  • 是的,我之前不理解您的解决方案,谢谢,我会将其作为已接受的回复!
猜你喜欢
  • 1970-01-01
  • 2019-11-20
  • 2021-04-01
  • 2015-11-08
  • 1970-01-01
  • 1970-01-01
  • 2019-05-01
  • 2013-10-27
  • 2017-03-03
相关资源
最近更新 更多