因此,我正在尝试创建一个搜索过滤器。
我创建了这个:
$data = Input::all();
$ads = new Ads();
if($data['description']) {
$ads = $ads->where('description', 'LIKE', '%' . $data['description'] . '%');
}
if($data['min']) {
$ads = $ads->where('price', '>', $data['min']);
}
if($data['max']) {
$ads = $ads->where('price', '<', $data['max']);
}
我有$ data ['city']。但是问题是$ ads没有城市,它有userID,每个用户都有它的城市。我该怎么做,但实际上会搜索拥有此广告的用户,并检查城市是否像被搜索的城市一样。
我试过这样的事情:
$resultAds = $ads;
if($data['city']) {
foreach($resultAds as $rAds) {
if($rAds->compareCity($data['city'])) {
$resultAds[] = $rAds;
}
}
}
$resultAds = $resultAds->paginate(12);
但这不起作用。它给出以下错误:Symfony \ Component \ Debug \ Exception \ FatalErrorException(E_ERROR)调用非对象上的成员函数compareCity()并且$ rAds是否用于某种原因的布尔值?我认为那是因为我还没有完成-> get(); 但我无法做到这一点,因为我想对结果进行分页。
感谢帮助。
因此,现在我的问题是创建一个代理商以将用户名移出“用户”表。
id
description
price
userID
id
username
password
phone
city
我需要联系,以便根据用户从广告表中获取用户ID的用户所在的城市来获取所有带有请求城市的广告。
所以答案是这样的:
if($data['city']) {
$ads = $ads->whereHas('users', function ($q) use($data) {
$q->where('city','LIKE','%'.$data['city'].'%');
});
}
这是有效的解决方案。这是从其他答案中得出的。
我需要在模型中添加以下内容:
public function users() {
return $this->belongsTo('User');
}
现在就可以了。谢谢大家的帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句