如何通过 Laravel 中的外键检索数据?

Posted

技术标签:

【中文标题】如何通过 Laravel 中的外键检索数据?【英文标题】:How to retrieve data through Foreign Key in Laravel? 【发布时间】:2019-09-04 14:11:15 【问题描述】:

如何在 Laravel 中检索数据。

我有表用户,其中我有字段 parent_id,我在其中显示其 user_id 的信息。

现在我想显示登录用户的信息

我试过了

 Auth::user()->parent_id

我得到了选定的 parent_id,现在我想要那个 user_id 的名称。

我正在尝试这个

(Auth::user()->parent_id)->value('name')

它得到一个错误。 请告诉我如何在我的代码中编写此代码以获取该父 ID 的名称。

【问题讨论】:

【参考方案1】:

有(至少)两种方法可以做到这一点。

1- 无关系:您可以通过parent_id 选择/查找用户并获取其名称。像这样的:

 App\User::find(Auth::user()->parent_id)->name 

2- 有关系:我认为这更容易。定义关系并将parent_id 设置为外键。然后你可以得到父用户。像这样的:

 Auth::user()->parentUser->name  // parentUser is the method created in User model 

要定义和使用关系,请参阅@Tharaka Dilshan 答案。

【讨论】:

【参考方案2】:

User modal 中定义与父用户的关系。

用户模式

public function parent()

    return $this->belongsTo(User::class, 'parent_id');

刀片

 Auth::user()->parent->name 

【讨论】:

以上是关于如何通过 Laravel 中的外键检索数据?的主要内容,如果未能解决你的问题,请参考以下文章

无法从 Laravel Vue 通讯录项目中的外键表中获取数据

如何修复laravel迁移中的外键错误

如何使用 LINQ 中的外键列检索单个记录?

如何在删除时处理 MySql + Laravel 中的外键约束?

Laravel 5.4:无法从关系中检索数据

尝试使用 Laravel 中的外键从数据库中提取多行