我正在使用下表结构
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();
答案 0 :(得分:0)
您收到此错误的原因是因为$request
在关闭范围内不存在。每当你有一个闭包并且想要使用一个存在于它之外的变量时,你必须使用use
将它传递给闭包。
改变:
->where(function ($query) {
到
->where(function ($query) use($request) {
希望这有帮助!