Я получаю ошибку «Попытка получить свойство не-объекта» от моего контроллера - PullRequest
0 голосов
/ 10 июля 2019

Я получаю ошибку «Попытка получить свойство необъекта» каждый раз, когда пытаюсь обработать депозит в моем контроллере

Вот мой контроллер

 users::where('id',$user->id)
  ->update([
  'confirmed_plan' => $deposit->plan,
  'activated_at' => \Carbon\Carbon::now(),
  'last_growth' => \Carbon\Carbon::now(),
  ]);
    //get plan
    $p=plans::where('id',$deposit->plan)->first();
    //get settings 
    $settings=settings::where('id', '=', '1')->first();
    $earnings=$settings->referral_commission*$p->price/100;

  //increment the user's referee total clients activated by 1
  agents::where('agent',$user->ref_by)->increment('total_activated', 1);
  agents::where('agent',$user->ref_by)->increment('earnings', $earnings);
  }

  //update deposits
  deposits::where('id',$id)
  ->update([
  'status' => 'Processed',
  ]);
  return redirect()->back()
  ->with('message', 'Action Sucessful!');
}

И, похоже, ошибка находится в этой строке кода

    $earnings=$settings->referral_commission*$p->price/100;

А вот и мой блейд вида процесса депозита

@include('header')
    <!-- //header-ends -->
    <!-- main content start-->
    <div id="page-wrapper">
        <div class="main-page signup-page">
            <h3 class="title1">Manage clients deposits</h3>

            @if(Session::has('message'))
            <div class="row">
                <div class="col-lg-12">
                    <div class="alert alert-info alert-dismissable">
                        <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
                        <i class="fa fa-info-circle"></i> {{ Session::get('message') }}
                    </div>
                </div>
            </div>
            @endif

            <div class="bs-example widget-shadow table-responsive" data-example-id="hoverable-table"> 
                <table class="table table-hover"> 
                    <thead> 
                        <tr> 
                            <th>ID</th> 
                            <th>Client name</th>
                            <th>Client email</th>
                            <th>Amount</th>
                            <th>Payment mode</th>
                            <th>Plan</th>
                            <th>Status</th> 
                            <th>Date created</th>
                            <th>Option</th>
                        </tr> 
                    </thead> 
                    <tbody> 
                        @foreach($deposits as $deposit)
                        <tr> 
                            <th scope="row">{{$deposit->id}}</th>
                            <td>{{$deposit->duser->name}}</td>
                            <td>{{$deposit->duser->email}}</td> 
                             <td>${{$deposit->amount}}</td> 
                             <td>{{$deposit->payment_mode}}</td>
                             @if(isset($deposit->dplan->name)) 
                             <td>{{$deposit->dplan->name}}</td>
                             @else
                             <td>For withdrawal</td>
                             @endif
                             <td>{{$deposit->status}}</td> 
                             <td>{{$deposit->created_at}}</td> 
                             <td> <a class="btn btn-default" href="{{ url('dashboard/pdeposit') }}/{{$deposit->id}}">Process</a></td> 
                        </tr> 
                        @endforeach
                    </tbody> 
                </table>
            </div>
        </div>
    </div>
    @include('modals')
    @include('footer')

Я получаю сообщение об ошибке «Попытка получить свойство необъекта» без объяснения того, где искать. Мне нужна помощь, пожалуйста.

1 Ответ

0 голосов
/ 10 июля 2019

Вы уверены, что у вас есть $settings объект с id из 1?

$settings=settings::where('id', '=', '1')->first();  // <-- why 1, why not just first()?

Если вы жестко программируете один идентификатор для одной установки в БД, который всегда будет одинаковым, и всегда с идентификатором 1 ... попробуйте вместо этого добавить это в код.

Также проверьте $deposit->plan - это правильно, или, может быть, это должно быть $deposit->plan_id или подобное?Возможно, $p является нулевым, поскольку нет значения для $deposit->plan.

Вы можете установить здесь некоторую проверку ошибок, проверив нулевое значение перед вычислением:

if(isset($settings) && isset($p)){
    $earnings=$settings->referral_commission*$p->price/100;
} 
else
{
    $earnings = 0; // or whatever you want to replace it with should there be no setting
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...