gpt4 book ai didi

php - 从 Eloquent 模型中获取所有关系

转载 作者:可可西里 更新时间:2023-10-31 22:13:13 24 4
gpt4 key购买 nike

有一个 Eloquent 模型,是否可以在运行时获取它的所有关系及其类型?

我试过查看 ReflectionClass ,但我找不到任何对这种情况有用的东西。

例如,如果我们有经典的 Post 模型,有没有办法像这样提取关系?

- belongsTo: User
- belongsToMany: Tag

最佳答案

要做到这一点,您将知道模型中方法的名称 - 它们可以有很大差异 ;)

想法:

  • 如果你在方法中有一个模式,比如 relUser/relTag,你可以过滤掉它们

  • 或者遍历所有公共(public)方法,看看是否弹出一个Relation对象(坏主意)

  • 您可以定义一个 protected $relationMethods(注意:Laravel 已经使用了 $relations),它包含一个包含方法的数组。

调用 Post->User() 后,您将收到 BelongsToRelation 系列中的其他对象之一,因此您可以列出该类型的关系。

[编辑:评论后]

如果模型配备了 protected $with = array(...); 那么您可以使用 $Model->getRelations()< 查看加载的关系 加载记录后。如果没有加载记录,这是不可能的,因为尚未触及关系。

getRelations() 位于 /vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php

但目前它没有出现在 laravel.com/api 的 api 中 - 这是因为我们有更新的版本

关于php - 从 Eloquent 模型中获取所有关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20334843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com