如果我在我的应用程序中定义了一个雄辩的模型,它与其他模型类型建立了许多不同的关系,那么我如何在不知道我正在处理的模型的任何其他信息的情况下获得所有这些关系的信息?

例如,想象一个简单的事务模型,它可以有许多行,也属于单个用户。

现在,给定一个事务模型的实例(填充或未填充),我如何了解它与其他模型的关系?

只是要清楚,我不想检索实际的相关数据,我只想找出每个关系指的是什么类,以及它是否是一对多,多对多等。

任何建议表示赞赏。

谢谢

有帮助吗?

解决方案

Laravel的eloquent模型不是这样工作的,关系是由模型中的方法定义的,并且不是在实例化时由模型自动加载的,因此当您想要使用特定关系时,需要实际调用这些

当您实例化模型类时,它定义了零关系。这可以通过以下方式显示:

$user = new User();

print_r($user->getRelations());

//Output : empty array

正如您所看到的,模型幸福地不知道它可能在关系方法中声明或可能没有声明的任何关系。调用模型关系时:

$user = new User();

$user->find(1)->roles()->get();

Eloquent使用方法在模型上设置关系 setRelation($relation, $value) 它将调用的方法的名称作为第一个参数,并将该方法的返回作为第二个参数。因此,在您明确要求之前,为不存在的关系提供上下文。

我知道这不是你希望听到的,但没有办法用雄辩来做到这一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top