我在3个不同的表/模型之间创建了模型关系。
由于hasMany-property得到了一个对象集合,我必须使用for循环访问每个Models方法才能获得我想要的数据。 反正有没有告诉我希望它在所有对象上运行相同的功能?
伪代码:
Model A //HasMany Model B
Model B //HasMany Model C, Belongs to A
Model C //BelongsTo C
$foo = new User::Find(Auth::id());
//Need to loop the collection of data in order to get the information
foreach($foo->permissions as $permission)
{
$name = $permission->permissionsTypes->name;
}
我试过这样做:
$foo->permissions->permissionsTypes;
但由于它是一个集合,它不起作用。
有没有其他方法可以在不通过数组循环的情况下获取此信息?
感谢任何指导!
答案 0 :(得分:1)
使用pluck()
和collapse()
:
$permissionsTypes = $foo->permissions->pluck('permissionsTypes')->collapse();
答案 1 :(得分:0)
如果是,请定义hasMany关系,请将hasMany更改为hasOne然后
foreach($foo->permissions as $permission)
{
$name = $permission->permissionsTypes->name;
}
或者你可以通过它的索引得到一个对象:
{{ $permission[0]->name}}
或从集合中获取第一个对象:
{{ $permission->first() }}
当您使用find()
或first()
时,您会获得对象,因此您可以轻松获取属性:
{{ $object->name}}