Object of class Illuminate\Database\Eloquent\Builder could not be converted to string

0

Mam taki problem ten błąd mi wyskakuje w momencie kiedy próbuje wydrukować wartość zwróconą przez zapytanie sql dosłanie model daje kod

    public function statistict_new(\App\statistic $statistic,$page  = 0) {
        $statistic->add("Wchodził na statystyki",$_SERVER["SERVER_ADDR"],$_SERVER["HTTP_USER_AGENT"],Auth::User()->id,date("Y-m-d H:i:s"));
        $staty = $statistic::skip($page)->take(10)->get();
        foreach ($staty as $staty_foreach) {
            $id = $staty_foreach->users_id;
            $staty_foreach->users_id = \App\User::select("login")->where("id","=",$staty_foreach->users_id);
            print $staty_foreach->users_id;
            
        }
        
        //var_dump($staty_foreach);
        //return View('statistic_new')->with("staty",$staty_foreach);   
    }

No i teraz chodzi o to, żeby wydrukować z tabeli statistic wszystkie statystyki, ale jak bym tylko operował na tabeli statistic to bym miał w polu users_id tylko liczby więc ja stworzyłem pojedyńcze zapytanie który wyciąga z tabeli users login i to zapytanie nie działa zwraca mi obiekt, który nie może być konwetrtowany na string szukałem też w google, ale nie znalezłem odpowiedzi.

1
$staty_foreach->users_id = \App\User::select("login")->where("id","=",$staty_foreach->users_id);

Co ta instrukcja ma robić?

1

Na temat odpowiadaj w postach.

Powinieneś utworzyć związek w modelu Statistic tak, abyś był w stanie napisać $staty_foreach->user->login.
Poczytaj o związkach w Laraverze (jest w dokumentacji).

0

na razie coś takiego zrobiłem

    public function statistict_new(\App\statistic $statistic,$page  = 0) {
        $statistic->add("Wchodził na statystyki",$_SERVER["SERVER_ADDR"],$_SERVER["HTTP_USER_AGENT"],Auth::User()->id,date("Y-m-d H:i:s"));
        $staty = $statistic::skip($page)->take(10)->get();
        foreach ($staty as $staty_foreach) {
    
            $id = $staty_foreach->users_id;
            
            $id_s = $statistic::find($id)->User;
            print $id_s;

            
        }
        
    }

I teraz model

    public function User()  {
        
        return $this->hasMany('App\User',"id","users_id");
        
    }

Tylko, że to jest problem,. że wyciąga mi z tabeli users wszystkie dane, a ja chcę tylko login i nie wiem jak to zrobić próbowałem zrobić coś takiego $statistic::find($id)->User['login']
Ale piszę nieznany index.

0

Wcześniej przecież zastosowaleś selecta względem pola login.

Tam gdzie robisz skipa dołóż selecta. (Naucze sie laravela jeszcze przy Was)

$staty = $statistic::skip($page)->take(10)->get();

Na pierwszy rzut oka tego właśnie brakuje.

0

A teraz jeszcze w funkcji User zaminaiłem kod na ten

return $this->hasMany('App\User',"id","users_id")->select("login");

I tera zwraca login, ale dodatkowo zwraca mi go w takiej postaci

[{"login":"janik"}][{"login":"janik"}]
0

Już sobie poradziłem musiałem zostasować coś ntakiego

    public function statistict_new(\App\statistic $statistic,$page  = 0) {
        $statistic->add("Wchodził na statystyki",$_SERVER["SERVER_ADDR"],$_SERVER["HTTP_USER_AGENT"],Auth::User()->id,date("Y-m-d H:i:s"));
        $staty = $statistic::skip($page)->take(10)->get();
        $new_statistic = array();
        foreach ($staty as $staty_foreach) {
            $id = $staty_foreach->users_id;
            
            $staty_foreach->users_id = $statistic->find($id)->User;
            $new_statistic['ip'] = $staty_foreach->ip;
            $new_statistic['http_user_agent'] = $staty_foreach->http_user_agent;
            $new_statistic['name'] = $staty_foreach->users_id->login;
            $new_statistic['date'] = $staty_foreach->date;
            $new_statistic['how_page'] = $staty_foreach->how_page;
        }
        return View('statistic_new')->with("staty",$new_statistic);   
    }

model

    public function User()  {
        
        return $this->belongsTo('App\User',"users_id","id")->select("login");
        
    }
0
belongsTo('App\User',"users_id","id")->select("login");

Nie pisz tak. Cały User należy do statistic a nie tylko login.

Mozliwe że tego i tak nie wykorzystasz ale należy być konsekwentnym

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