Laravel 调用雄辩的集合函数
我已经在3个不同的表/模型之间创建了模型关系 由于hasMany属性,我获得了一个对象集合,因此我必须使用for循环来访问每个Models方法,以便获得所需的数据。 有没有告诉我,我希望它在所有对象上运行相同的函数 伪代码: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());
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是的,这就是目标。但似乎我必须一个接一个地循环每一项。。。