我想要做的是,通过将两个表连接在一起来组合搜索查询。我有一个非常简单的虚构的房地产网站,用户可以使用多个选项搜索列表,例如按城市搜索。我设置它的方式是我有一个visibility
模型和表,其中包含一个城市列表和一个列表模型,控制器和表。
使用这些字段City
city
设置id
表格。对于name
表格,listings
字段与city_id
表格中的id
字段相关联。在我的主页上,我有一个用户在城市中键入的选项,结果将使用上面的表格发送到结果页面,其中包含该城市的所有或任何列表。这就是我遇到问题的地方。
这是我运行查询时遇到的错误:
city
这是主页上表单的代码:
Trying to get property of non-object
这是执行查询的控制器(index.blade.php
<form action="/search" method="GET" role="search">
{{ csrf_field() }}
<div class="form-wrapper">
<input type="text" class="search-query" name="q" placeholder="Search citys" autocomplete="off">
</div>
<button type="submit" class="btn btn-success">SEARCH</button>
</form>
)
listingcontroller
我的清单模型:
public function listingsresults()
{
$q = Input::get ( 'q' );
$listing = Listing::join('cities', 'listings.city_id', '=', 'cities.id')
->select('listings.city_id', 'cities.name')
->where ( 'name', 'LIKE', '%' . $q . '%' )
->paginate(8);
if (count ( $listing ) > 0)
return view ( 'front-end/listingsresults' )->withDetails ( $listing )->withQuery ( $q );
else
return view ( 'front-end/listingsresults' )->withMessage ( 'No Details found. Try to search again !' );
}
我的城市模型:
class Listing extends Model
{
//
protected $fillable = [
'street',
'city_id',
'state_id',
'price',
'beds',
'baths',
'sqft',
'descrip',
'category_id',
'user_id',
'state_id',
'fullpic_id',
'extrapicone_id',
'extrapictwo_id',
'extrapicthree_id',
'extrapicfour_id',
'',
];
// protected $primaryKey = 'id';
public function user(){
return $this->belongsTo('App\User');
}
public function state(){
return $this->belongsTo('App\State');
}
public function city(){
return $this->belongsTo('App\City');
}
public function category(){
return $this->belongsTo('App\Category');
}
public function fullpic(){
return $this->belongsTo('App\PhotoListing');
}
}
有关我为什么会收到此错误的任何想法?我不确定是不是因为我没有正确构建我的查询。这也是构建我所要求的模型,控制器和视图的最佳方式,因为我仍然试图掌握Laravel和MVC。