如何在Laravel的三张桌子之间搜索

时间:2015-11-02 11:54:59

标签: search laravel-4

模型

   public function school(){
        return $this->belongTo('Schools', 'schoolId');
    }
   public function friend(){
        return $this->hasMany('Friends', 'friendId');
    }

控制器

$users = User::with(['school' => function($q) use ($keyword) {
        $q->where('name', 'LIKE','%'.$keyword.'%' );
    }])
    ->with(['friend' => function ($q) use ($keyword){
        $q->where('name', 'LIKE','%'.$keyword.'%' );
    }])
    ->orWhere('name','LIKE','%'.$keyword.'%')
    ->get();

我想做一个搜索功能,其中关键字中的一个键,例如Ali,它将在学校,朋友和用户表之间进行搜索,然后返回给我的学校名称,朋友姓名和有阿里的用户名。

在这3个表中,只有用户名没有Ali,但它返回一个空数组

1 个答案:

答案 0 :(得分:0)

我建议更改架构。朋友,学校和其他组应该是用户和组的数据透视表,因此您只能在一个表中找到记录