从表中获取数据以及从SQL

时间:2016-02-08 18:58:40

标签: sql laravel controller

您有一个文本搜索输入,用于在数据库中查找匹配的记录并从表中获取所有数据:

让我们这样说:

$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吗?

2 个答案:

答案 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();