2016-10-22 1 views
0

Я использую структуру folloing таблицыЯ запутался в построении запроса для laravel 5.3?

resource_types 
     id 
     type 

communiction_links 
     id 
     inst_id 
     rety_id 
     cont_id 
     value 

contacts 
     id 
     fname 
     lname 
     image 
     park 

Я хочу найти шаблон в двух таблицах и retrive данных из двух таблиц. Если шаблон является цифрой, тогда я буду искать в link_links, и если шаблон является алфавитами, тогда я буду искать контакт в столбце fname или lname (где идентификатор cont_id и идентификатор контакта должны быть одинаковыми) и (идентификаторы rety_id и resource_type связи_связи должны быть одинаковыми)

Я записал следующий запрос, но я получил ошибку.

$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

ОшибкаException в строке fetchDataController.php 50: Неопределенная переменная: запрос – sam

ответ

0

Причина вы получаете эту ошибку, потому что $request не существует в рамках закрытия. Всякий раз, когда у вас есть закрытие, и вы хотите использовать переменную, которая существует за ее пределами, вы должны передать ее закрытию с помощью use.

изменение:

->where(function ($query) { 

в

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

Надежда это помогает!

+0

Теперь у меня «контакт не найден», но контакт есть. есть ли какая-либо ошибка в поддержании отношения между таблицами? – sam

+0

Все правильные имена ваших таблиц, например. это контактная таблица 'contact' или' contacts'? Кроме того, если вы вернетесь к своему другому вопросу, где у вас есть аналогичный запрос, я могу попытаться помочь вам в этом и спасти вас, создав несколько вопросов по этой проблеме. –

+0

Я правильно. – sam