我正在使用laravel 5.1进行我的新项目智能搜索。 我的问题是使用类似查询来搜索该表来从外键获取数据。 我的数据库表是:
category->id, name
search->id, category_id (foreign_key), question, answer, tags
我的型号代码是: 类别模型
public function helpcenter() {
return $this->belongsTo('App\HelpCenter');
}
帮助中心模型
public function category() {
return $this->hasOne('App\HelpCenterCategory', 'id', 'category_id');
}
我的搜索查询控制器功能是
$queries = HelpCenter::has('category')
->where('questions', 'LIKE', '%'.$term.'%')
->orwhere('category_id.name','LIKE','%'.$term.'%')
->take(5)->get();
答案 0 :(得分:1)
您需要使用whereHas()子查询关系:
$queries = HelpCenter::whereHas('category', function($category) use ($term)
{
$category->where('name','LIKE','%'.$term.'%');
})
->orWhere('questions', 'LIKE', '%'.$term.'%')
->take(5)->get();
whereHas()在此处记录:http://laravel.com/docs/5.1/eloquent-relationships#querying-relations