Laravel - 未定义 属性: stdClass - 搜索查询

Laravel - Undefined property: stdClass - search query

所以我有了这个 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(); 指定我的 blade 变量。

好吧,这就是我的 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

它给我 ERROR 这样的:

Undefined property: stdClass::$sifraMotoopremaaktivnosts

这是我的 Motooprema.php 模型与此 sifraMotoopremaaktivnosts 关系:

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

我不知道我做错了什么,我需要这个搜索,这个关系只是显示激活的汽车帖子。我该怎么办?

DB::table 不 return 一个 Motooprema class.

因此您不能使用关系。 ( $auto->sifraMotoopremaaktivnosts... )

$autoQuery = DB::table('motoopremas'); 行替换为 $autoQuery = Motooprema::query(); 并且它应该 return 是 Motooprema.

的一个实例