您有一个文本搜索输入,用于在数据库中查找匹配的记录并从表中获取所有数据:
让我们这样说:
$q = Input::get('items');
$q = "\"" . "($q)" . "\"";
$items = DB::table('my_items')->whereRaw(
'MATCH(item_name) AGAINST(? IN BOOLEAN MODE)',
array($q)
)->get();
所以我从textsearch中获取数据库中的所有项目,然后将结果作为json发送到一些脚本,用脚本更新我的页面:
return Response()->json($items);
关系是:
My_item:
public function brand(){
return $this->hasOne('App\Brand', 'id', 'brand_id');
}
品牌:
public function My_item(){
return $this->belongsToMany('App\My_item');
}
现在问题是在'my_items'
表中我有一些数据作为引用外表的ID。
例如,我将有'brand_id'
例如引用'brands'
表格,我可以在其中获得有关品牌的信息。
例如,我可以在我的品牌表brand_id = 3
中'Microsoft'
表示(id = 3, name = microsoft)
。
现在我需要做的不仅是将brand_id传递给我的视图,还传递实际信息(名称),在本例中为Microsoft,以便我可以将该信息放入项目描述中。
但是,如何在使用该查询发送之前获取该信息?我可以在查询中使用某种标记,例如$items = DB::table bla bla with foreign
吗?
答案 0 :(得分:0)
首先,您可以将搜索查询简化为以下内容:
My_item::where('item_name', 'LIKE', "%$q%")->get();
现在,将关系分配给模型中其他表的关系。然后,您可以使用以下语法获取所有信息:
My_item::with('brand')->where('item_name', 'LIKE', "%$q%")->get();
在此处阅读有关关系的更多信息:https://laravel.com/docs/5.1/eloquent-relationships
答案 1 :(得分:0)
这种方式有效,DB::
方法被删除了:
$items = My_item::with('brand')->where('item_name', 'LIKE', "%$q%")->get();
这个人没有:
DB::table('my_items')::with('brand')->where('item_name', 'LIKE', "%$q%")->get();