我很困惑为laravel 5.3构建查询?

时间:2016-10-22 13:22:59

标签: laravel laravel-5 laravel-5.3

我正在使用下表结构

resource_types 
      id
      type

communiction_links
      id
      inst_id
      rety_id
      cont_id
      value

 contacts
      id
      fname
      lname
      image
      park

我想在两个表中搜索模式并从两个表中检索数据。 如果模式是数字,那么我将在communication_links中搜索,如果模式是alphabates,那么我将在fname或lname列中搜索联系人(其中communication_links' s cont_id和联系人的id应该相同)和(communication_links&#39 ; s rety_id和resource_type的id应该相同)

我记下了以下查询,但我收到了错误。

$parent_contact = \App\Contact::join('communication_links','contacts.id','=','communication_links.cont_id')
                                            >join('resource_types','resource_types.id','=','communication_links.rety_id')
                                            ->select('contacts.id','contacts.image','contacts.fname','contacts.lname','communication_links.value')
                                            ->where('resource_types.type','LIKE',"{mobile}%")
                                            ->where(function ($query) {
                                                $query->where('communication_links.value','LIKE',"{$request->search_string}%")
                                                        ->orWhere('contacts.fname','LIKE',"{$request->search_string}%")
                                                        ->orWhere('contacts.lname','LIKE',"{$request->search_string}%");
                                            })
                                            ->get();

1 个答案:

答案 0 :(得分:0)

您收到此错误的原因是因为$request在关闭范围内不存在。每当你有一个闭包并且想要使用一个存在于它之外的变量时,你必须使用use将它传递给闭包。

改变:

->where(function ($query) {

->where(function ($query) use($request) {

希望这有帮助!