Laravel 5.4如何从集合中获取关联的solicitud数组?
当然可以获取到
solicitud数组! 你的查询已经通过with()预加载了solicitud及其嵌套关联,所以返回的$requests集合里的每个Request_conversation模型实例都已经包含了对应的solicitud数据。你可以通过以下几种方式轻松提取solicitud集合或数组:
1. 使用pluck快速提取(推荐)
pluck方法可以直接从集合的每个模型中取出指定关联属性,非常简洁:
// 获取包含所有solicitud模型的集合 $solicitudesCollection = $requests->pluck('solicitud'); // 如果需要转成纯数组,加上toArray() $solicitudesArray = $requests->pluck('solicitud')->toArray();
2. 用map自定义处理
如果你需要对每个solicitud做额外处理再提取,可以用map方法:
$solicitudes = $requests->map(function ($conversation) { // 这里可以添加自定义逻辑,比如只返回solicitud的部分字段 return $conversation->solicitud; }); // 转数组同样用toArray() $solicitudesArray = $solicitudes->toArray();
3. 过滤空值(可选)
虽然你用了whereHas('solicitud')确保每个Request_conversation都有对应的solicitud,但如果怕有意外情况,可以过滤掉空值:
$solicitudesArray = $requests->pluck('solicitud')->filter()->toArray();
小提醒
你的查询里用了groupBy('solicitud'),在Eloquent中直接按关联模型分组可能会有数据库层面的限制(比如MySQL严格模式下的分组规则),更稳妥的写法是按关联的外键分组,比如groupBy('solicitud_id'),这样能避免潜在的语法错误哦。
内容的提问来源于stack exchange,提问作者Jorge Mejia
相关产品推荐
相关产品推荐

