此集合实例上不存在属性 [expiry_date]。

http://img.mukewang.com/6342b98b0001fbb815970898.jpg

http://img2.mukewang.com/6342b994000140c815970900.jpg

如果用户包在 laravel 中过期,我必须禁用用户的所有功能。就像我在一个月包自动过期后购买一个月包,用户看不到来自数据库的任何数据。


我的过期日期自动插入到用户表中,然后我加入了我的通话记录表。(到期日期自动从包裹月份计算,例如:我选择一个包裹 1 个月,然后它在用户表中自动显示到期日期 1 个月)


我的代码是


  public function index(){


   $calllog = DB::table('calllogs')->join('users', 'users.id', '=', 'calllogs.user_id')->find();


    if($calllog->expiry_date > 'expiry_date'){

        return $this->sendResponse($calllog->toArray(), 'Package Expired Sorry!');

    }

    else{

        return $this->sendResponse($calllog->toArray(), 'Call Log retrieved successfully');   

    }

 }

请帮忙


守着星空守着你
浏览 102回答 3
3回答

繁星coding

$calllog是一个对象数组,您应该使用它first()来代替get()或使用它$calllog[0]->expiry_date,如果我正确理解您的要求,那么应该$calllog[0]->expiry_date试试这个: public function index(){   $calllog = DB::table("calllogs")->join("users", "users.id", "=", "calllogs.user_id")->get();   if($calllog[0]->expiry_date > 'expiry_date'){     return $this->sendResponse($calllog->toArray(), 'Package Expired Sorry!');   }   else{    return $this->sendResponse($calllog->toArray(), 'Call Log retrieved successfully');     }}

汪汪一只猫

您正在比较一整列,因为$calllog它是一个集合,而不是一个元素。您应该指定要比较表中的哪些行。您可以使用以下方法执行此操作:$calllog = DB::table('calllogs')->join('users', 'users.id', '=', 'calllogs.user_id')->find($id);例如。如果你想比较它们,你必须遍历它们。Morover,您正在将它与不是日期的字符串“expiry_date”进行比较......

慕侠2389804

该get方法返回一个实例,Illuminate\Support\Collection该实例是用于处理数据数组的包装器您正在尝试访问expiry_date一组对象您可以通过更改此行来修复它$calllog = DB::table('calllogs')->join('users', 'users.id', '=', 'calllogs.user_id')->get();至$calllog = DB::table('calllogs')->join('users', 'users.id', '=', 'calllogs.user_id')->first();
打开App,查看更多内容
随时随地看视频慕课网APP