是否可以从 Laravel 中的 hasmany 关系中返回特定的索引元素?
Posted
技术标签:
【中文标题】是否可以从 Laravel 中的 hasmany 关系中返回特定的索引元素?【英文标题】:Is it possible to return a specific index element from a hasmany relationship in Laravel? 【发布时间】:2021-05-06 08:31:33 【问题描述】:$row->sub_category[0]->name
当我检查其他问题时,我可以看到有访问第一个和最后一个元素的选项,但是有没有一种方法可以访问基于数组索引值的元素。
我需要在 hasmany 关系中获取第 n 个项目(您知道 n),并且会在没有 foreach 循环的情况下直接获取它(不加载其他关系元素)。
【问题讨论】:
如果它是你想要的数组索引值,那么你可以做sub_category[$index]
。目前尚不清楚您在这里需要什么。您是否需要在 hasmany 关系中获取第 n 个项目(您知道 n),或者您是否需要获取满足某些条件的第一个项目,并且您需要在您之后执行此操作吗?已经获得了所有的关系项目,还是会在不加载其他关系元素的情况下自行获得它?
我需要在 hasmany 关系中获取第 n 个项目(您知道 n),并且在没有 foreach 循环的情况下直接获取它(不加载其他关系元素)。我也更新了相关问题。谢谢
->offsetGet($nth) 能解决你的问题吗?
$row->sub_category->offsetGet(2)->name ,给我一个错误,未定义的偏移量,所有 n 值
@RoshJ 你抛弃了 $row->sub_category 吗?如果它没有第三个值,它将抛出该错误
【参考方案1】:
如果您想要关系的第 N 项而不加载所有其他元素,您可以(可能)使用查询:
$nthSubcategory = $row->sub_category()->skip($n-1)->first()
如果它不存在,那么$nthSubcategory
将最终为空
【讨论】:
以上是关于是否可以从 Laravel 中的 hasmany 关系中返回特定的索引元素?的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Eloquent 中的多级深度 hasMany 关系
Laravel hasMany 关系表中的行跨度和 <tr>
Laravel 5.6和Eloquent将子模型持久化到数据库中,无法从模型中找到hasMany或belongsTo方法