FahdSanaullah Ответов: 1

Ошибка фреймворк Laravel: "не определено свойство: осветить\базы данных\красноречивый\коллекция::$цена"


Привет,

Я работаю над небольшим веб-сайтом, который был разработан в Laravel другим разработчиком, который ушел, и я должен заставить его функционировать. Он должен был работать, но я установил и настроил его, с новыми и чистыми базами данных. Теперь я получаю эту ошибку, когда пытаюсь получить доступ к платежной системе сайта и совершить покупку.

Это соответствующий код:

/home/myproject/myproject-website-master/app/Http/Controllers/PaymentsController.php
            'ticket' => 'required',
            'stripeToken' => 'required'
        ]);
 
 
        $event = Event::where('event_token', request('event-token'))->firstOrFail();
        $remainingTickets = $event->tickets - $event->sold_tickets;
 
        $bus = BusLine::where('origin', $request->bus)->get();
        $count = ( request('ticket')+0 >= 1 ) ? request('ticket')+0 : 1;
        $extra = 0;
 
        if ($remainingTickets < $request->ticket) {
            session()->flash('status', 'danger');
            session()->flash('message', 'OOOPS! It\'s seems that we are officially sold out. Sorry, se you next time!');
            return redirect()->back()->withInput();
        }
 
        // ADD THE TAX
        $price = ($event->price + $bus->price) * $count;
 
 
        // Generate new user if not exists
        $exists = Customer::where('email', request('email'))->first();
 
        // if the user doesn't exists then create a new customer
        if (!count($exists)) {
            // Create the customer
            $customer = StripeCustomer::create([
                'email' => request('email'),
                'source' => request('stripeToken')
            ]);


Есть идеи, как я могу это исправить?

Любая помощь оценена по достоинству, большое спасибо!

Что я уже пробовал:

Попробовал изменить get() на first(), но это приводит к ошибке "Попытка получить свойство не-объекта"

Richard Deeming

"Попытка получить свойство не-объекта"

Я не знаком с Laravel, но разве эта ошибка не предполагает, что нет подходящей автобусной линии?

1 Ответов

Рейтинг:
2

Jesús Hagiwara

Проблема в том, что $bus это коллекция, которая не имеет свойства "цена", потому что она не включена в коллекцию, и именно поэтому вы получаете эту ошибку. Чтобы исправить это, вам просто нужно использовать lists() метод:

// ADD THE TAX
$price = ($event->price + $bus->lists('price')) * $count;

Или если вы работаете с Laravel 5.3.*:
// ADD THE TAX
$price = ($event->price + $bus->pluck('price')) * $count;

Те возвращают коллекцию, которая включает в себя "цену" на нее.