Я немного новичок в 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 прокомментированные строки выше работают нормально, так что я немного потерялся?
Спасибо,
Николас
Ха-ха ... конечно нет: D
боковой комментарий вы можете использовать dd($companies) вместо print_r()
Откуда взялась переменная $cpm?






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
Вы вошли в систему, когда получаете эту ошибку?