如果我在我的应用程序中定义了一个与其他模型类型设置了许多不同关系的Eloquent模型,那么如何在不知道我正在处理的模型的其他任何内容的情况下获取所有这些关系的信息? / p>
例如,假设一个简单的事务模型,它可以有许多行,也属于一个用户。
现在,给定一个Transaction模型的实例(填充或未填充),我怎样才能找到它与其他模型的关系?
为了清楚起见,我不想检索实际的相关数据,我只想找出每个关系所引用的类,以及它是一对多,多对多等。
任何建议表示赞赏。
由于
答案 0 :(得分:2)
Laravel的雄辩模型不能以这种方式工作,关系由模型中的方法定义,并且在实例化时不会由模型自动加载,因此需要在您想要使用特定关系时实际调用这些方法。
实例化模型类时,它定义了零关系。这可以通过以下方式显示:
$user = new User();
print_r($user->getRelations());
//Output : empty array
正如您所看到的,模型幸福地没有意识到它可能会或可能不会在关系方法中声明的任何关系。当你打电话给模特关系时:
$user = new User();
$user->find(1)->roles()->get();
Eloquent使用方法setRelation($relation, $value)
在模型上设置关系,该方法将被调用的方法的名称作为第一个参数,并将该方法的返回作为第二个参数。因此,在您明确要求之前提供不存在的关系的上下文。
我知道这不是你希望听到的,但是没有办法用Eloquent做到这一点。