Laravel 调用雄辩的集合函数

Laravel 调用雄辩的集合函数,laravel,laravel-5,Laravel,Laravel 5,我已经在3个不同的表/模型之间创建了模型关系 由于hasMany属性,我获得了一个对象集合,因此我必须使用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());

我已经在3个不同的表/模型之间创建了模型关系

由于hasMany属性,我获得了一个对象集合,因此我必须使用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;
但因为它是一个集合,所以它不起作用

有没有其他方法可以在不通过数组循环的情况下获取此信息


谢谢你的指导

可能是您定义了hasMany关系如果是,请将hasMany更改为Hasmone

foreach($foo->permissions as $permission)
{
    $name = $permission->permissionsTypes->name;
}
或者,您可以通过索引获取其中一个对象:

{{ $permission[0]->name}}
或从集合中获取第一个对象:

{{ $permission->first() }}
当您使用
find()
first()
时,会得到一个对象,因此您可以使用简单的:

{{ $object->name}}
使用
pluck()
collapse()

$permissionsTypes=$foo->permissions->pull('permissionsTypes')->collapse();

您确定所有$foo->permissions中都有permissions选项吗?如果没有任何权限,那么它将无法工作是的,但我得到一个错误,即集合实例上不存在该属性。因此,如果我创建一个for循环,那么我可以逐个调用每个对象上的函数。你的目标是什么?你想把所有的
permissionstype
放在一个集合中吗?@JonasStaudenmeir是的,这就是目标。但似乎我必须一个接一个地循环每一项。。。