błąd przy wybieranie danych z tabeli laravel

0

Mam taki problem wybieram dane z tabeli i chcę użyć w tym zapytanie join i operacji odejmowania w zapytanie jak dodaje operacje odejmowania i obłsuge join to laravel zwraca błąd.

SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'id' in field list is ambiguous (SQL: select `godzina_zaczecia`, `godzina_zakonczenia`, `id`, `poziom_nastroju`, `poziom_leku`, `pobudzenie`, `poziom_zdenerwania`, UNIX_TIMESTAMP(godzina_zakonczenia) - UNIX_TIMESTAMP(godzina_zaczecia) as czas from `nastroj` inner join `przekierowanie_lekow` on `nastroj`.`id` = `przekierowanie_lekow`.`id_nastroj` where id_users = 38 order by godzina_zaczecia DESC limit 10 offset 0)

A teraz pokaże kod.

 private function utworz_zapytanie_wyszukiwania() {
        $data3 = new \App\Http\Controllers\data();
       // $zapytanie = "select poziom_nastroju,godzina_zaczecia,godzina_zakonczenia,poziom_leku,poziom_zdenerwania from nastroj ";
        $users = DB::table('nastroj')->join('przekierowanie_lekow', 'nastroj.id', '=', 'przekierowanie_lekow.id_nastroj')->select('godzina_zaczecia','godzina_zakonczenia','id','poziom_nastroju','poziom_leku','pobudzenie','poziom_zdenerwania',  DB::raw('UNIX_TIMESTAMP(godzina_zakonczenia) - UNIX_TIMESTAMP(godzina_zaczecia) as czas  '));
        
        //SELECT time(godzina_zakonczenia) - time(godzina_zaczecia) as czas FROM `nastroj` order by czas
        if (Input::get("nastroj_od") != "" or Input::get("nastroj_do") != "" or Input::get('lek_od') != "" or Input::get('lek_do') != "" or Input::get('pobudzenie_od') != "" or Input::get('pobudzenie_do') != "" or Input::get('zdenerowania_od') != "" or Input::get('zdenerowania_do') != "" or Input::get('nastroj_rok') != "" or Input::get('nastroj_miesiac') != "" or Input::get('nastroj_dzien') != "" or Input::get('nastroj_rok2') != ""  or Input::get('nastroj_miesiac2') != ""  or Input::get('nastroj_dzien2') != "" or Input::get('opis') != "") {
        
        
        //print $zapytanie;
        /*
            $zapytanie .= " where ";
            if (Input::get('nastroj_od') != "") {
               
                $zapytanie .= "poziom_nastroju >= " . Input::get('nastroj_od') . " " . " and " . " ";
            
            }
            //$zapytanie =  $this->usun_and($zapytanie);
            if (Input::get('nastroj_do') != "") $zapytanie .=    " "  . " " .  "poziom_nastroju <=  " .  " " . Input::get('nastroj_do')  . " "   . Input::get('nastroj_lub') . " ";
            //$zapytanie =  $this->usun_and($zapytanie);
            if (Input::get('lek_od') != ""){
                //$zapytanie .= " and ";
                $zapytanie .= "poziom_leku >= " . Input::get('lek_od') . " " . " and "  . " ";
            }
            //$zapytanie =  $this->usun_and($zapytanie);
            if (Input::get('lek_do') != "") $zapytanie .= " poziom_leku <= " . Input::get('lek_do') .  " " .  Input::get('lek_lub') . " ";
            if (Input::get('pobudzenie_od') != ""){
                //$zapytanie .= " and ";
                $zapytanie .= "pobudzenie >= " . Input::get('pobudzenie_od') . " " . " and "  . " ";
            }
            //$zapytanie =  $this->usun_and($zapytanie);
            if (Input::get('pobudzenie_do') != "") $zapytanie .= " pobudzenie <= " . Input::get('pobudzenie_do') .  " " .  Input::get('pobudzenie_lub') . " ";
            if (Input::get('zdenerowania_od') != ""){
                //$zapytanie .= " and ";
                $zapytanie .= "poziom_zdenerwania >= " . Input::get('zdenerowania_od') . " " . " and "  . " ";
            }
            //$zapytanie =  $this->usun_and($zapytanie);
            if (Input::get('zdenerowania_do') != "") $zapytanie .= " poziom_zdenerwania <= " . Input::get('zdenerowania_do') .  " and ";
           // $zapytanie =  $this->usun_and($zapytanie);
            //if (Input::get('nastroj_lub') != "") $zapytanie .= "nastroj_od >= " . Input::get('nastroj_od');
            if (Input::get('nastroj_rok') != "") $zapytanie .= "( year(godzina_zaczecia) <=" . Input::get('nastroj_rok') . "  and " ;
            if (input::get('nastroj_miesiac') != "") $zapytanie .= " month(godzina_zaczecia) =" . Input::get('nastroj_miesiac') . ")";
            $zapytanie = $this->usun_and($zapytanie);
            $zapytanie2 = DB::select($zapytanie);
            print $zapytanie;
            //var_dump($zapytanie2);
        }*/
        //print Input::get('lek_do');
        
        if (Input::get('opis') != "") {
            
            $opis = Input::get('opis');
            $users->where("co_robilem", "like" , "%$opis%");
         }
         if (Input::get("nastroj_od") != "") {
           $users->Where('poziom_nastroju','>=',Input::get("nastroj_od"));
         }
         if (Input::get("nastroj_do") != "") {
            $users->Where('poziom_nastroju','<=',Input::get("nastroj_do"));
         }
         if (Input::get('lek_od') != "") {
            //print "dupa";
           $users->Where('poziom_leku','>=',Input::get('lek_od'));
         }
         if (Input::get('lek_do') != "" ) {
            
            $users->Where('poziom_leku','<=',Input::get('lek_do'));
         }
         if (Input::get('pobudzenie_od') != "" ) {
            
           $users->Where('pobudzenie','>=',Input::get('pobudzenie_od'));
         }
         if (Input::get('pobudzenie_do') != "") {
            print "dupa";
            $users->Where('pobudzenie','<=',Input::get('pobudzenie_do'));
         }
         if (Input::get('zdenerowania_od') != "" ) {
            
           $users->Where('poziom_zdenerwania','=>',Input::get('zdenerowania_od'));
         }
         if (Input::get('zdenerowania_do') != "" ) {
            
            $users->Where('poziom_zdenerwania','<=',Input::get('zdenerowania_do'));
         }
         if (Input::get('nastroj_rok') != "") $users->whereRaw("year(godzina_zaczecia) >=" . Input::get('nastroj_rok') );
         if (Input::get('nastroj_miesiac') != "") $users->whereRaw("month(godzina_zaczecia) >=" . Input::get('nastroj_miesiac') );
         if (Input::get('nastroj_dzien') != "") $users->whereRaw("day(godzina_zaczecia) >=" . Input::get('nastroj_dzien') );
         if (Input::get('nastroj_rok2') != "") $users->whereRaw("year(godzina_zaczecia) <=" . Input::get('nastroj_rok2') );
         if (Input::get('nastroj_miesiac2') != "") $users->whereRaw("month(godzina_zaczecia) <=" . Input::get('nastroj_miesiac2') );
         if (Input::get('nastroj_dzien2') != "") $users->whereRaw("day(godzina_zaczecia) <=" . Input::get('nastroj_dzien2') );
         
         //print $id;
         
            //if (input::get('nastroj_miesiac') != "") $zapytanie .= " month(godzina_zaczecia) =" . Input::get('nastroj_miesiac') . ")";
      //   elseif (Input::get('lek_lub') == " and " and Input::get('lek_do') != "") {
        //    $users->andWhere('poziom_leku','<',Input::get('lek_do'));
         //}

      //print Input::get('opis');
      //$dziel = $this->podziel_opis();
      //$this->wyszukaj_wg_opisu($dziel);
      //$this->wyszukaj_wg_opisu($dziel);
      
      //print $t2->co_robilem;
      //}
         //$users->get();
        //$users = DB::table('nastroj')->where('poziom_nastroju',0)->Where('poziom_nastroju',0)->get();
    //return $t;
    
    }
    $id_user = Auth::User()->id;
    $users->whereRaw("id_users = $id_user");
             $sortuj = Input::get("sortuj");
             $users->orderByRaw("$sortuj DESC");
             
             $this->ilosc_stron = $users->count();
         //print $count;
         print "<font color=green>" . ($this->strona-1) * 10 . "</font>";
         $users->offset(($this->strona-1) * 10)->limit(10);
         $this->zapytanie = $users->get();
2

Komunikat raczej jasny każda z tabel: nastroj, przekierowanie_lekow ma kolumnę id, ty pobierasz w select kolumnę id nie wskazując z której tabeli, więc baza "nie wie" co masz pokazać.

Kolumna zdefiniowana w select:

select('godzina_zaczecia','godzina_zakonczenia','id','poziom_nastroju',

Powinna zawierać nazwę tabeli, np. ,'nastroj.id',

1 użytkowników online, w tym zalogowanych: 0, gości: 1