2016-10-27 3 views
1

Я пытаюсь использовать DB построить запрос следующим образом:Laravel 5,2 DB Query

Получить все Distributors принадлежащие к User с их Accounts, которые имеют Notes.

Я наклоняю голову вокруг этого запроса. Вот что я имел, что работает в том, что он получает выкладывает информацию мне нужно в вопросах один массив, но 2: notename перезаписывает accountname, так как они оба называют это, и я не могу передать в $user-> заменить 2

Рабочая (вид)

 $user = Auth::user(); 

     $accounts = DB::table('distributors') 
         ->join('accounts', function ($join) { 
            $join->on('distributors.vip_abbv', '=', 'accounts.dist_abbv') 
             ->where('distributors.user_id', '=', 2); 
           }) 
         ->join('notes', 'notes.account_id', '=', 'accounts.id') 
         ->select('accounts.name', 'notes.*') 
         ->get(); 

Что мне нужно

$ пользователя = Auth :: пользователь();

$accounts = DB::table('distributors') 
        ->join('accounts', function ($join, $user) { 
           $join->on('distributors.vip_abbv', '=', 'accounts.dist_abbv') 
            ->where('distributors.user_id', '=', $user->id); 
          }) 
        ->join('notes', 'notes.account_id', '=', 'accounts.id') 
        ->select('accounts.name (this is overwritten. can I change it to come out account_name so it doesnt?)', 'notes.*') 
        ->get(); 
+0

любые ошибки @Packy –

+0

Ошибка проходил второй параметр с $ присоединиться, так что я просто использовал Auth для текущего идентификатора пользователя против переменной, и она работала. См. Принятый ответ. – Packy

ответ

0

Попробуйте это за имя учетной записи:

->select('accounts.name as custom_account_name') 

Надеется, что это помогает.

+0

Perfect !! Это сработало для имени учетной записи. Просто нужно передать в user-> id – Packy

+0

. Я действительно получил идентификатор, просто используя 'Auth :: user() -> id', противоположный переменной – Packy

+0

@Packy Да. :). Ты прав. Рад помочь. –

0

Попробуйте это:

$user = Auth::user(); 
DB::table('distributors') 
    ->join('accounts', function ($join) use ($user) { 
      $join->on('distributors.vip_abbv', '=', 'accounts.dist_abbv') 
       ->where('distributors.user_id', '=', $user->id); 
      }) 
    ->join('notes', 'notes.account_id', '=', 'accounts.id') 
    ->select('accounts.name as account_name', 'notes.*') 
    ->get();