如何从laravel 5中的相关表中获取数据?

时间:2016-06-06 21:10:15

标签: mysql laravel query-builder

我的搜索表单在我的页面上搜索了几个表,我如何进行以下操作并正确搜索?我希望能够搜索代理商名称,客户名称和类型名称以及用户名和密码:

我的观点如下所示

    public function index(){

    $search = \Request::get('search');

    $accounts =
        Account::where('clients.name','like','%'.$search.'%')
        ->orWhere('agencies.name','like','%'.$search.'%')
        ->orWhere('types.name','like','%'.$search.'%')
        ->orWhere('username','like','%'.$search.'%')
        ->orWhere('password','like','%'.$search.'%')
        ->Join('types', 'accounts.id', '=', 'accounts.type_id')
        ->Join('agencies', 'accounts.id', '=', 'accounts.agency_id')
        ->Join('clients', 'accounts.id', '=', 'accounts.client_id')
        ->paginate(20);

      return view('accounts',compact('accounts'));
    }

用户名和密码搜索正确,但联接不会带来任何结果

       ->Join('types', 'accounts.type_id', '=', 'types.id')
       ->Join('agencies', 'accounts.agency_id', '=', 'agencies.id')
       ->Join('clients', 'accounts.client_id', '=', 'clients.id')

UPDATE :: 这很有效:

{{1}}

1 个答案:

答案 0 :(得分:1)

您的加入似乎有误

->Join('types', 'accounts.id', '=', 'accounts.type_id')
->Join('agencies', 'accounts.id', '=', 'accounts.agency_id')
->Join('clients', 'accounts.id', '=', 'accounts.client_id')

了解' ='你使用账户表,你需要有一方让类型/代理/客户加入工作。

所以它会像

->Join('types', 'accounts.id', '=', 'types.type_id')
->Join('agencies', 'accounts.id', '=', 'agencies.agency_id')
->Join('clients', 'accounts.id', '=', 'clients.client_id')

说需要你的数据库结构来指出为什么你没有从连接查询搜索得到结果。