2016-04-20 5 views
1

Привет, ребята, я новичок в PhP и Laravel. Я хочу использовать запрос соединения в laravel и написали код ниже, но он дает мне ошибку.Laravel Присоединиться к вопросу

$data = DB::table('employees') 
->join('contact_details', 'employees.id', '=','contact_details.employee_id') 
      ->join('education', 'employees.id', '=', 'education.employee_id') 
      ->join('addresses', 'employees.id', '=', 'addresses.employee_id') 
      ->select('employees.first_name','employees.id','employees.gender','education.id','education.school','education.subject','addresses.village') 
      ->where('employees.id', '=',$id) 


      ->get(); 
    return "$data"; 

и ошибка

ErrorException in ProfileController.php line 66: 
Array to string conversion 

in ProfileController.php line 66 
at HandleExceptions->handleError('8', 'Array to string conversion',  'E:\xampp\htdocs\djiafg\app\Http\Controllers\ProfileController.php', '66',  array('id' => '72', 'data' => array())) in ProfileController.php line 66 
     at ProfileController->view('72') 
    at call_user_func_array(array(object(ProfileController), 'view'), array('id' => '72')) in Controller.php line 80 
    at Controller->callAction('view', array('id' => '72')) in  ControllerDispatcher.php line 146 
    at ControllerDispatcher->call(object(ProfileController), object(Route), 'view') in ControllerDispatcher.php line 94 
    at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request)) 
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 
+1

сообщение вашей ошибки тоже под вопросом и удалить этот дополнительный paranthesis из '($ ID)' 'т -> где ('employees.id', '=', $ ID)' –

+0

@ Nazir Noori: Кажется, что $ id будет с круглыми скобками, но ваш отчет об ошибке может хорошо прояснить реальную ситуацию. – naf4me

+0

Не публикуйте эту ошибку. Это было бы слишком легко. – Strawberry

ответ

0

Просто попробуйте удалить пробел перед выбрать и сделать где условие следующим

$data = DB::table('employees') 
    ->join('contact_details', 'employees.id', '=','contact_details.employee_id') 
    ->join('education', 'employees.id', '=', 'education.employee_id') 
    ->join('addresses', 'employees.id', '=', 'addresses.employee_id') 
    ->select('employees.first_name','employees.id','employees.gender','education.id','education.school','education.subject','addresses.village') 
    ->where('employees.id',$id) 
    ->get(); 

    return view ('profile',compact('data')); 
+0

спасибо Haseena, но это не сработало –

+0

Является ли это $ id массивом? Можете ли вы попытаться напечатать $ id –

3

Laravel имеет специальные функции для соединения, называемые модели ,

Eloquent ORM, прилагаемый к Laravel, обеспечивает красивую, простую реализацию ActiveRecord для работы с вашей базой данных. Каждая таблица базы данных имеет соответствующую «Модель», которая используется для взаимодействия с этой таблицей. Модели позволяют запрашивать данные в ваших таблицах, а также вставлять новые записи в таблицу.

Модель может иметь один или несколько. Это вернет одну строку из данных таблицы пользователя.

Добавьте это в свою модель, которая извлекает данные из таблицы ваших сотрудников.

public function user() { 
    return $this->hasOne('app\User', 'id', 'user_id'); 
} 

Теперь вы можете запустить, чтобы сбросить идентификатор пользователя. (вам нужна модель под названием «Сотрудники», которая подключена к вашей таблице «сотрудники»)

$employees = Employees::get(); 
dump($employees->user->id); 

Надеюсь, это сработает!

Смотри на: https://laravel.com/docs/5.2/eloquent

Смежные вопросы