Свойство [expiry_date] не существует в этом экземпляре коллекции. в Laravel - PullRequest
0 голосов
/ 26 февраля 2020

enter image description hereenter image description here Я должен отключить все функции пользователя, если срок действия пакета пользователя истекает в laravel. как я покупаю пакет в течение одного месяца после того, как истекает срок действия пакета автоматизации c, и пользователь не может видеть данные, поступающие из базы данных.

моя дата истечения автоматически вставляется в таблицу пользователей, и я присоединяюсь к своей таблице журнала вызовов. (Дата истечения автомата c рассчитывается по месяцу пакета , например: я выбираю пакет на 1 месяц, затем он показывает expr ie дату автоматически в таблице пользователя на 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');   
    }
 }

пожалуйста, помогите

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 26 февраля 2020

$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');   
  }
}
0 голосов
/ 26 февраля 2020

Метод 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();
0 голосов
/ 26 февраля 2020

Вы сравниваете целый столбец, поскольку $calllog - это коллекция, а не элемент. Вы должны указать, какую из строк в таблице вы хотите сравнить. Вы можете сделать это, например:

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

. Если вы хотите сравнить их все, вам придется l oop через них.

Morover, вы сравниваете его со строкой 'expiry_date', которая не является датой ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...