php - Laravel - 未定义的属性:stdClass - 搜索查询
问题描述
所以我有这个带有搜索功能的 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');
}
我不知道自己做错了什么,我需要进行此搜索,而这种关系只是显示激活的汽车帖子。我应该怎么办 ?
解决方案
DB::table
不返回Motooprema
类。
因此,您不能使用关系。( $auto->sifraMotoopremaaktivnosts
... )
$autoQuery = DB::table('motoopremas');
将该行替换为$autoQuery = Motooprema::query();
,它应该返回一个Motooprema
.
推荐阅读
- json - 带有elasticsearch引擎的django-haystack中的json字段
- javascript - Angularjs Bootstrap Select 创建重复选择
- c++ - 为什么这个 C++ 程序在 MacOS 上编译而不是在 Ubuntu 上编译?
- java - 从 onSuccess(LocationEngineResult 结果) 获取经纬度
- amazon-web-services - Amazon Web Services 与这些 Azure Web Services 最相似的是什么
- javascript - 填写表单时的Bootstrap 4实时表单验证
- deep-learning - Overfeat 可以在 ResNet 或 Inception 网络架构上工作吗
- python - 使用python的字典在文本文件中搜索关键字
- c++ - 初始化跟踪器对象时出现 OpenCV 错误
- matlab - 如何使用 Matlab (for/while/if)