Laravel - Неопределенное свойство: stdClass - поисковый запрос - PullRequest
0 голосов
/ 11 июля 2020

Итак, у меня есть этот проект автомобиля Laravel с поиском. Я выполняю поиск с запросом DB::table(), и он работает нормально, пока я не добавлю model relationship. Я объясню, вот мой код.

Это мой поиск motoopremapretraga функция:

/**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     */
    public function motoopremapretraga(Request $request)
    {
        $autoQuery = DB::table('motoopremas');

        //pretraga - marka i model
        foreach ($request->only(['marka', 'model']) as $term => $value) {
            if (empty($value)) {
                continue;
            }
            $autoQuery->where($term, $value);
        }

        //pretraga - cijena od/do whereBetween
        if (
            $cijenaod = (int)$request->input('cijenaod')
            && $cijenado = (int)$request->input('cijenado')
        ) {
            $autoQuery->whereBetween('cijena', [(int)$cijenaod = $request->input('cijenaod'), (int)$cijenado = $request->input('cijenado')]);
        }

        //pretraga - vrsta cijene
        if ($vrsta_cijene = $request->get('vrsta_cijene')) {
            $autoQuery->where('vrsta_cijene', $vrsta_cijene);
        }

        //pretraga - grupa opreme
        if ($grupa_opreme = $request->get('grupa_opreme')) {
            $autoQuery->where('grupa_opreme', $grupa_opreme);
        }

        //pretraga - djelovi
        if ($tip = $request->get('tip')) {
            $autoQuery->where('tip', $tip);
        }

        //pretraga - ostecenje
        if ($ostecenje = $request->get('ostecenje')) {
            $autoQuery->where('ostecenje', $ostecenje);
        }

        //pretraga - zamjena
        if ($zamjena = $request->get('zamjena')) {
            $autoQuery->where('zamjena', $zamjena);
        }

        //pretraga - stanje
        if ($stanje = $request->get('stanje')) {
            $autoQuery->where('stanje', $stanje);
        }

        //vracanje rezultata
        $automobili = $autoQuery->get();

        return view('site.motooprema.pretraga')->with('automobili', $automobili);
    }

Вы видите, я использую DB::table('motoopremas'), чтобы найти свои результаты из поиска, и в конце просто $automobili = autoQuery->get();, чтобы указать мою переменную лезвия.

Хорошо, тогда это мой results blade view действительно просто, чтобы показать, все ли работает нормально:

@foreach($automobili->where('deleted_at', null) as $auto)
{{$auto->naslov}}
@endforeach

И все работает хорошо, но когда я добавляю свои отношения из моей модели Motooprema.php вот так:

@foreach($automobili->where('deleted_at', null) as $auto)
<!-- this is my relationship -->
@if($auto->sifraMotoopremaaktivnosts->first()->status == 1)

{{$auto->naslov}}

@endif
@endforeach

Это дает мне ОШИБКУ вот так:

Undefined property: stdClass::$sifraMotoopremaaktivnosts

И это это моя модель Motooprema.php с этой sifraMotoopremaaktivnosts связью:

public function sifraMotoopremaaktivnosts()
    {
        return $this->hasMany(Motoopremaaktivnost::class, 'sifra_id', 'id');
    }

Я не знаю, что делаю не так, мне нужен этот поиск, и эта связь просто показывает активированные сообщения об автомобилях. Что мне делать?

1 Ответ

2 голосов
/ 11 июля 2020

DB::table не возвращает класс Motooprema.

По этой причине вы не можете использовать отношения. ($auto->sifraMotoopremaaktivnosts ...)

Замените строку $autoQuery = DB::table('motoopremas'); на $autoQuery = Motooprema::query();, и она должна вернуть экземпляр Motooprema.

...