Laravel. Czy taka funkcja ma prawo działać.

0

Chciałbym wyświetlić wynik działania funkcji, która ma policzyć z tabeli komputery, ile jest komputerów o nazwie DELL i ile o nazwie IBM. Może problem jest z Route. Już sam nie wiem.

KomputerController:

public function ibm()
{
    $ibm= DB::table('computers')
        ->where('name', 'IBM')->get()->count();
    $dell= DB::table('computers')
        ->where('name', 'DELL')->get()->count();
 
    return view('welcome', ['ibm' => $ibm, 'dell' => $dell]);
 }

web.php

Route::get('welcome','ComputerController@ibm');

Widok:

IBM:  <p>{{  $ibm ?? '' }}</p>

DELL:  <p>{{  $dell ?? '' }}</p>

Niestety widok nie wyświetla nic. dd($ibm) przed return w kontrolerze pokaże tylko wynik pierwszej zmiennej.

4

A co masz w tej zmiennych $ibm i $dell przed returnem.
Z tego co pamiętam to funkcji agregujących w Query builder używało się bez get.
Czyli

    $ibm= DB::table('computers')
        ->where('name', 'IBM')->count();
0

W ogóle to powinieneś zrobić model Computer.php i potem w kontrolerze dać

use App\Computer;
$ibm= Computer::where('name', 'IBM')->count();
1

Ok. Z grubsza to wygląda ok. Spróbuj bez warunku w widoku zrobić {dd($ibm)} i zobacz co jest tam przekazywane.

1

Skoro w widoku masz nie zainicjowaną zmienną to szukaj co jest nie tak przy przekazywaniu zmiennych.
Może jednak nie edytujesz właściwych plików i gdzieś masz jakąś literówkę.

0

Gdzie masz plik welcome.blade.php ? chyba ze masz katalog welcome a tam plik index.blade.php wtedy powinno byc

return view('welcome.index', ['ibm' => $ibm, 'dell' => $dell]);
0

@chomikowski: Funkcja działa jak trzeba ale tylko w nowo utworzonym czystym widoku raport.blade.php. Jeżeli tę samą funkcję chcę wyświetlić jednak w widoku np. welcome.blade.php to nie mam żadnych wyników.

0

Kodowanie plików- masz UTF-8 w tym welcome.blade.php? Może jeszcze kwestia rozszerzenia pliku. Nie masz np. podwójnego rozszerzenia php?

0

@jurek1980:

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Osoby</title>

        <!-- Fonts -->
        <link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">

        <!-- Styles -->
        <link href="/css/main.css" rel="stylesheet">
        <style>
            html, body {
                background-color: #fff;
                color: #636b6f;
                font-family: 'Nunito', sans-serif;
                font-weight: 200;
                height: 100vh;
                margin: 0;
            }

            .full-height {
                height: 100vh;
            }

            .flex-center {
                align-items: center;
                display: flex;
                justify-content: center;
            }

            .position-ref {
                position: relative;
            }

            .top-right {
                position: absolute;
                right: 10px;
                top: 18px;
            }

            .content {
                text-align: center;
            }

            .title {
                font-size: 84px;
            }

            .links > a {
                color: #636b6f;
                padding: 0 25px;
                font-size: 13px;
                font-weight: 600;
                letter-spacing: .1rem;
                text-decoration: none;
                text-transform: uppercase;
            }

            .m-b-md {
                margin-bottom: 30px;
            }



        </style>
    </head>
    <body>
        <div class="flex-center position-ref full-height">
            @if (Route::has('login'))
                <div class="top-right links">
                    @auth
                        <a href="{{ url('/home') }}">Home</a>
                    @else
                        <a href="{{ route('login') }}">Login</a>

                        @if (Route::has('register'))
                            <a href="{{ route('register') }}">Register</a>
                        @endif
                    @endauth
                </div>
            @endif

                <div class="row">

               

                    <div id="raport" class="col-sm-2">
                        <div class="change-title2">
                            <img src="/img/soldier.png" class="change-category-icon" /> Osób w systemie: <span style="color: red">{{ $blogCount }} </span>
 IBM: <p>{{  $ibm ?? '' }}</p>
 DELL: <p>{{  $dell ?? '' }}</p>

                            <p></p>
                            
            </div>
        </div>
        </div>
    </body>
</html>

0

Chodzi o kodowanie pliku nie o meta tag HTMLa. Jakiego edytora/IDE używasz?
Na forum w dziale PHP lub w necie zerknij jak sprawdzić kodowanie pliku w Twoim edytorze.

BTW.
Ten nagłówek strony powinieneś mieć w jakimś pod wodoku.

0

Podejrzyj źródło strony poprzez jakieś F12, narzędzia developerskie w przeglądarce.
W tym widoku który wkleiłeś jest nie domknięty tag div dla menu. To te dane powinny pojawić się w menu.

0

To nie jest plik dołączany w widoku. Tutaj dałeś plik z LAYOUT, to nie może ci zadziałać bo widok nie jest dokeljany plik z widoku nie miałby żadnych tagów w stylu HEAD itd. Dajesz zły route

return view('welcome', ['ibm' => $ibm, 'dell' => $dell]);

ty wchodzisz na strone po logowaniu a tutaj dales strone do logowania. Welcome pojawi sie dopiero po zalogowaniu.
To co chcesz wyslac powinno byc w pliku IndexController w metodzie index

 public function index()
    {
        return view('index.index');
    }

No i wtsawiles STYLE do kodu xD

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