Laravel - Объект класса stdClass не может быть преобразован в int - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть небольшой поиск по таблице машин. Все работает нормально, пока я не добавлю это к своему представлению:

@guest
   <a href="/login" class="play-btn"><i class="icon-heart"></i></a>
@else
   @if(auth()->user()->hasLiked($car))
      <span class="auto-featured"><a id="like{{$car->id}}-bs3" style="cursor: pointer;"><i 
      id="like{{$car->id}}" class="icon-heart" style="color:white"></i></a>&nbsp;&nbsp;&nbsp;&nbsp; 
      {{$car->likers()->count()}}</span>
   @else
      <span class="auto-featured"><a id="like{{$car->id}}-bs3" style="cursor: pointer;"><i 
      id="like{{$car->id}}" class="icon-heart-o" style="color:white;font-family: 'Raleway', sans-serif;"> 
      </i></a>&nbsp;&nbsp;&nbsp;&nbsp;{{$car->likers()->count()}}</span>
   @endif
@endguest

После этого он показывает мне эту ошибку: Object of class stdClass could not be converted to int. Я использую overtrue для лайка, подписки и прочего. Это моя search() функция:

public function search(Request $request){


        $carQuery = DB::table('cars');
        $cars = Car::all();
        //$cars = Car::orderBy('placeni_status', 'desc')->get();
        // standard where fields
        foreach ($request->only(['marka', 'model']) as $term => $value) {
            if (empty($value)) {
                continue;
            }
            $carQuery->where($term, $value);
        }

        // gear is one of gears array values
        if ($sigurnost = $request->get('sigurnost')) {
            $carQuery->whereIn('sigurnost', $sigurnost);
        }

        // gear is one of gears array values
        if ($karoserija = $request->get('karoserija')) {
            $carQuery->where('karoserija', $karoserija);
        }

        // gear is one of gears array values
        if ($gorivo = $request->get('gorivo')) {
            $carQuery->where('gorivo', $gorivo);
        }

        if($lokacija = $request->get('lokacija')){
            $carQuery->where($cars->user->city, $lokacija);
        }

        // between a price from/to the values set
        if (
            $from = $request->input('from')
            && $to = $request->input('to')
        ) {
            $carQuery->whereBetween('cijena', [$from, $to]);
        }

        // between a price from/to the values set
        if (
            $fromm = $request->input('fromm')
            && $too = $request->input('too')
        ) {
            $carQuery->whereBetween('kilometraza', [$fromm, $too]);
        }

        if (
            $od = $request->input('od')
            && $do = $request->input('do')
        ) {
            $carQuery->whereBetween('godiste', [$od, $do]);
        }

        $cars = $carQuery->orderBy('placeni_status', 'desc')->get();

        return view('search.cars')->with('cars', $cars);
    }

Что я делаю не так и что означает эта ошибка? Мне просто нужно показать на найденных машинах количество лайков и еще кое-что вроде фаворита и подписаться. Это моя ajaxRequest из CarsController:

/**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */
    public function ajaxRequestCars(Request $request){


        $car = Car::find($request->id);
        $response = auth()->user()->toggleLike($car);
        //$response = auth()->user()->toggleFavorite($car);

        return response()->json(['success'=>$response]);
    }

А это моя Car.php модель:

<?php

namespace App;

use Overtrue\LaravelFollow\Traits\CanBeLiked;
use Overtrue\LaravelFollow\Traits\CanBeBookmarked;
use Overtrue\LaravelFollow\Traits\CanBeFavorited;
use Overtrue\LaravelFollow\Traits\CanBeFollowed;
use Illuminate\Database\Eloquent\Model;
use App\User;

class Car extends Model
{
    use CanBeLiked, CanBeBookmarked, CanBeFavorited, CanBeFollowed;

    protected $table = "cars";
    protected $primaryKey = "id";

    protected $fillable = [
        'naslov', 'marka', 'model', 'kubikaza', 'zamajac', 'karoserija', 'godiste', 'kilometraza', 'br_brzina_mjenjaca',
        'gorivo', 'vlasnistvo', 'kilovata', 'konjska_snaga', 'emisiona_klasa', 'pogon', 'mjenjac', 'br_vrata', 'velicina_felni', 'posjeduje_gume',
        'br_sjedista', 'str_volana', 'klima', 'boja_spolj', 'boja_unutrasnj', 'materijal_unutrasnj', 'registracija', 'ostecenje',
        'zamjena', 'sigurnost', 'oprema', 'stanje', 'nacin_finansiranja', 'nacin_prodaje', 'cijena', 'vrsta_cijene', 'opis_oglasa', 'fotografije'
    ];

    public function user(){
        return $this->belongsTo(User::class);
    }

    public function vehicleinfo(){
        return $this->hasMany(VehicleInfo::class);
    }

    public function ad(){
        return $this->hasMany(Ad::class);
    }
}

1 Ответ

0 голосов
/ 18 апреля 2020

Полагаю, $car->likers() возвращает экземпляр отношения, а не фактический likers. Попробуйте сделать $car->likers->count() в обоих местах.

...