SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 в laravel - PullRequest
0 голосов
/ 19 сентября 2019

Я использую главную страницу, и в заголовке есть ряд непрочитанных сообщений. Код главной страницы:

 <li class="nav-item dropdown">
    <a href="{{url('chat-room')}}" target="_blank" role="button">
        <span class="adminpro-icon adminpro-chat-pro"></span>
        <span class="indicator-ms"> 
            @php $totlUnread = 0; @endphp
            @foreach($chatusers as $chatuser)                                  
                @if($chatuser->unread)
                    @php $totlUnread+=$chatuser->unread; @endphp
                @endif
            @endforeach

            @if($totlUnread == 0)
                @php echo "<span class='pending'></span>"; @endphp
            @else
                @php echo "<span class='pending'>$totlUnread</span>"; @endphp
            @endif
        </span>
    </a>                          
</li>

когда мне нужно передать это значение (пользователи) во все представления, я создаю представлениеСоставьте и передайте данные через него.

public function boot()
{
    $chatusers = DB::select("select users.id, users.name, users.email, count(is_read) as unread 
    from users LEFT  JOIN  messagesnews ON users.id = messagesnews.from and is_read = 0 and messagesnews.to = " . Auth::id() . " where users.id != " . Auth::id() . " 
    group by users.id, users.name, users.email");
    View::share('chatusers', $chatusers);
}

, но выдайте мне ошибку

SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 У вас есть ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с 'где users.id! = group by users.id, users.name, users.email' в строке 3 (SQL: выберите users.id, users.name, users.email, считайте (is_read) как непрочитанное от пользователей. ВЛЕВО ПРИСОЕДИНЯЙТЕСЬ сообщения, users.email)

, когда я использую SQL-запрос в любом контроллере, он работает очень хорошо, но в View Composer выдает ошибку.

Ответы [ 2 ]

0 голосов
/ 19 сентября 2019

Спасибо за все, я делаю ниже, и это работает хорошо

 public function boot()
{
     view()->composer('*', function ($view) 
    {
        if (Auth::check())
        {
            $id=Auth::user()->id;
            $chatusers = DB::select("select users.id, users.name, users.email, count(is_read) as unread 
        from users LEFT  JOIN  messagesnews ON users.id = messagesnews.from and is_read = 0 and messagesnews.to = " . $id . "
       where users.id != " . $id . " 
        group by users.id, users.name, users.email");

            $view->with('chatusers', $chatusers );
            $view->with('id', $id );
        }
    });
}
0 голосов
/ 19 сентября 2019

Использование Auth::id() приведет к нулевому значению.Вы должны использовать Auth::user()->id или auth()->user()->id для получения идентифицированного идентификатора пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...