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
.
的一个实例
所以我有了这个 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
.