我正在尝试获取所有模型关联的数组。我有以下模型:
class Article extends Eloquent
{
protected $guarded = array();
public static $rules = array();
public function author()
{
return $this->belongsTo('Author');
}
public function category()
{
return $this->belongsTo('Category');
}
}
从这个模型中,我试图得到它的以下关系数组:
array(
'author',
'category'
)
我正在寻找一种方法来自动从模型中拉出这个数组。
我在 Eloquent 模型上找到 了 RelationsToArray 方法的定义,它似乎返回了模型关系的数组。它似乎使用了 Eloquent 模型的 $this->relations 属性。但是,此方法返回一个空数组,并且关系属性是一个空数组,尽管我的关系设置正确。
如果不存储模型关系,$this->relations 用于什么?有什么方法可以自动获取模型关系的数组吗?
原文由 tprsn 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是不可能的,因为仅在使用
with
(用于急切加载)或使用模型中定义的关系公共方法(例如,如果创建了Author
模型)请求时才加载关系有以下关系当您像这样调用此方法时:
另外,正如我所说的
with
,当你使用这样的东西时:在这种情况下,第一篇文章(id为1)将加载它的相关模型
Author
你可以使用因此,如果不使用适当的方法来加载关系,就不可能神奇地获得关系,但是一旦你加载了关系(相关模型),那么你可以使用这样的东西来获取关系:
要将它们转换为
array
您可以使用toArray()
方法,例如:relationsToArray()
方法适用于加载了相关模型的模型。该方法将相关模型转换为数组形式,其中toArray()
方法将模型(有关系)的所有数据转换为数组,这里是源代码:它在转换为数组后合并模型属性及其相关模型的属性,然后返回它。