Модель Laravel 5.4 :: где не работает

Я немного новичок в laravel и пытаюсь сделать простую вещь, просто пытаясь выбрать несколько строк с красноречием и пробовал:

<?php

namespace App\Http\Controllers;
use Auth;
use App\Company;
use App\User;
use Illuminate\Support\Facades\View;
use Model;

class BaseController extends Controller {


    public function __construct() {

            //$companies = Company::find(1);
            //$companies = Company::all();
            $companies = Company::where('owner_id', Auth::user()->id);
                print_r($cpm);
            View::share ( 'companies', '$companies' );
    }

}

Но всегда получаю эту ошибку:

ErrorException

Trying to get property of non-object in BaseController.php (line 16)

И 2 прокомментированные строки выше работают нормально, так что я немного потерялся?

Спасибо,

Николас

Вы вошли в систему, когда получаете эту ошибку?

Ron van der Heijden 20.03.2018 19:24

Ха-ха ... конечно нет: D

user2496181 20.03.2018 19:31

боковой комментарий вы можете использовать dd($companies) вместо print_r()

Parker Dell 20.03.2018 21:26

Откуда взялась переменная $cpm?

smartrahat 20.03.2018 22:35
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
473
3

Ответы 3

public function __construct() {

        //$companies = Company::find(1);
        //$companies = Company::all();
        $companies = Company::where('owner_id', Auth::user()->id);
            print_r($cpm);
        View::share ( 'companies', '$companies' );
}

Этот кусок:

$companies = Company::where('owner_id', Auth::user()->id);

Необходимо изменить на это:

 $companies = Company::where('owner_id', Auth::user()->id)->get();

Get гарантирует, что ваш sql запущен, а вывод us вернется в $ companies.

И я верю

 View::share ( 'companies', '$companies' );

должно быть:

 View::share ( 'companies', $companies );

в результате чего:

public function __construct() {

        //$companies = Company::find(1);
        //$companies = Company::all();
        $companies = Company::where('owner_id', Auth::user()->id)->get();
            print_r($cpm);
        View::share ( 'companies', $companies );
}

Метод where() возвращает объект Строитель, а не результат запроса. Вам нужно вызвать get() метод, чтобы получить коллекцию, которую можно использовать.

Вы пытаетесь получить идентификатор вошедшего в систему пользователя, когда ни один пользователь не вошел в систему. Поэтому вам следует проверить, вошел ли пользователь в систему.

Советую использовать промежуточное ПО.

Вы также можете проверить, вошел ли пользователь в систему, используя:

if (Auth::check()) {
    $companies = Company::where('owner_id', Auth::user()->id)->get();
}

Прочтите это для получения дополнительной информации об аутентификации: https://laravel.com/docs/5.6/authentication

Другие вопросы по теме