调用雄辩集合函数



我在 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;

但由于它是一个集合,它不起作用。

有没有其他方法可以在不遍历数组的情况下获取此信息?

感谢您的任何指导!

使用pluck()collapse()

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

可能是你已经定义了 hasMany 关系,如果是,那么请将 hasMany 更改为 hasOne 然后

foreach($foo->permissions as $permission)
{
$name = $permission->permissionsTypes->name;
}

或者你可以通过它的索引来获取其中一个对象:

{{ $permission[0]->name}}

或者从集合中获取第一个对象:

{{ $permission->first() }}

当您使用find()first()时,您会得到一个对象,因此您可以使用以下简单方法获取属性:

{{ $object->name}}

最新更新