是否可以从 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 关系

orderBy on hasMany 关系 laravel

Laravel同步hasMany与belongsTo数组

Laravel hasMany 关系表中的行跨度和 <tr>

在laravel 5.1单元测试中嘲笑hasMany关系

Laravel 5.6和Eloquent将子模型持久化到数据库中,无法从模型中找到hasMany或belongsTo方法