为啥 model 关联不上

报错,这是为啥??

Trying to get property 'recharge_type' of non-object

上代码

controller

public function index(RechargePackage $recharge_package)
    {
    ...
    $recharge_package_webs = $recharge_package->with('recharge_type')->where('is_on', 1)->whereIn('recharge_type_id', [2,3,4,5])->get()->groupBy('recharge_type_id');
    ...
    }

model

    public function recharge_type()
    {
        return $this->belongsTo(RechargeType::class);
    }

blade

@foreach($recharge_package_webs as $recharge_package_web => $items)
    <div class="recharge-select-title mt-3 d-flex align-items-center">
        <b>{{ $recharge_package_web->recharge_type->description }}</b>
        <span>速度:384K/</span>
    </div>
    ...
@endforeach
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
岁月流沙
最佳答案
$recharge_package_web->recharge_type->description   //blade中的这个有问题吧
$recharge_package_web  //这个只是key吧
不是应该是:$items->first()->recharge_type->description
3年前 评论
wongvio (楼主) 3年前
讨论数量: 8

模板代码错了,$recharge_package_web->recharge_type->description 改成 $items->recharge_type->description 差不多

3年前 评论
wongvio (楼主) 3年前
lyxxxh 3年前

groupby 之后,循环里面的 items 是一个 collection 对象,要继续循环吆

3年前 评论

是不是recharge_package的某一条数据关联recharge_type没有

3年前 评论
岁月流沙
$recharge_package_web->recharge_type->description   //blade中的这个有问题吧
$recharge_package_web  //这个只是key吧
不是应该是:$items->first()->recharge_type->description
3年前 评论
wongvio (楼主) 3年前

你把$recharge_package_webs dump出来,保证能解决问题,既然是Trying to get property 'recharge_type' of non-object,那肯定是那个$recharge_package_web变量有问题。

你要一步一步echo调试!

3年前 评论

这代码真的一言难尽啊…只说你的问题吧,groupBy后是集合<$key, $collection>,你应该循环$items变量才可以取出里面数据,你现在却是在拿着数组的key在当对象用

3年前 评论
 public function recharge_type()
 {
     return $this->belongsTo(RechargeType::class);
 }

改为

 public function rechargeType()
 {
     return $this->belongsTo(RechargeType::class);
 }
3年前 评论
wongvio (楼主) 3年前

一样遇到这个问题了,groupby之后查询的with关联关系都没有,这个要怎么处理,难道要在query一遍么

3年前 评论
岁月流沙 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!