Vladislav
именно
вот только смысл, сократить 5 символов, проверка все рано нужна, Call to a member function delete() on null
Vladislav
invariance
компренде?
Andrey
company()->delete()
Vladislav
company()->delete()
Auth::user()->company->delete();
invariance
у тебя метод просто не запустится, если мидлвейр заблочит неавторизованного юзера
Andrey
после company скобки поставь, да
Vladislav
после company скобки поставь, да
сработало, а поясните?
invariance
а че тут пояснять
Andrey
Без скобок тебе возвращается коллекция, результат запроса
invariance
типо того
Andrey
А со скобками - возврщается QueryBuilder, и дальше с этим запросом можно работать - удалять, создавать и т/д/ записи
invariance
только мидлвейры желательно в роутере прописывать, что бы у тебя централизованно все это хранилось
invariance
сработало, а поясните?
функцонал построен на вызове __call() а не на __get() - гугли магические методы
Andrey
Чо мы тут о разном говорим, ну да ладно
Vladislav
только мидлвейры желательно в роутере прописывать, что бы у тебя централизованно все это хранилось
для prefix надесю это можно сделать...Хотя, контроллер юзер и так у меня все ссылки рбрабатывает
invariance
ну он спросил почему там скобки
Vladislav
Route::prefix('users')->group(function() { Route::get('/', 'UserController@index')->name('home'); Route::get('/company/delete', 'UserController@deleteCompany'); Route::get('/confirmation/{token}','Auth\RegisterController@confirmation')->name('confirmation');
invariance
я ответил
Andrey
$user->company и $user->company() разные штуки возвращает
invariance
ну вот тем-более
Andrey
Ну ты не на тот вопрос ответил по сути
invariance
внутри то это через магические методы работает
Andrey
Нет же. ты ответил на вопрос "как это сделано, что можно скобки а можно нет"
Andrey
а вопрос был о том, почему без скобок удаление не получалось
invariance
разные магические методы потому что вызываются 🤗
Vladislav
user()->company()->delete();
Vladislav
Call to undefined function App\Http\Controllers\company()
invariance
😂
Andrey
разные магические методы потому что вызываются 🤗
Разные магические методы могут возвразщать одинаковый результат
Andrey
Тут дело именно в том, что возвращает метод
Andrey
ну комон
invariance
Разные магические методы могут возвразщать одинаковый результат
я в курсе, а я сказал что в данном коде это не так
invariance
где?
когда он вместо company вызывает company()
invariance
разные действия происходят
invariance
следовательно магические методы выполняют разные функции
Vladislav
😂
😭
Andrey
Так то да, но к контексте вопроса - важно, что возвращается, а не то, какой магический метод используется
invariance
важно в общем то все)
Andrey
Слишком общий ответ. Так можно на простой вопрос и лекцию на пару часов прочитать. Но зачем.
invariance
мм
invariance
он спросил, почему там скобки нужны, я ответил, потому что магические методы разные вызываются
Vladislav
$user = Auth::user(); $user->company()->delete();
invariance
очевидно, что они разные результаты возвращают, раз одно работает, а другое нет
Andrey
Я не буду с тобой спорить
invariance
сам начал
invariance
)
Andrey
Для меня очевидно, что ему надо было понять, почему без скобок не работает delete
Vladislav
Как $user тогда на все function распространить
Vladislav
$user = Auth::user(); $user->company()->delete();
Vladislav
А то так везде лупить пока только
Andrey
И ответ не в том, что другой маг. метод, а в том, что возврщается другое значение
invariance
Как $user тогда на все function распространить
ты можешь в мидлвейре создать свойство user
Andrey
ты можешь в мидлвейре создать свойство user
А как к нему из контроллера доступиться?
invariance
А как к нему из контроллера доступиться?
контроллер с тем же запросом работает, что и мидлвейр
invariance
это один объект
Vladislav
ты можешь в мидлвейре создать свойство user
$this->middleware('auth'); Это же родной кстати мидлик, только сейчас вспомнил что его не создавал
invariance
смотри
Andrey
смотрю
invariance
class RedirectIfAuthenticated { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @param string|null $guard * @return mixed */ public function handle($request, Closure $next, $guard = null) { if (Auth::guard($guard)->check()) { return redirect('/home'); } $request->user = Auth::user(); return $next($request); } }
invariance
$request->user = Auth::user(); вот такую строчку добавь и усе
invariance
это тот самый мидлвейр
Andrey
а, ну вариант. Хотя я бы middleware для этого не пользовал наверн
Andrey
И это будет работать? Надо посмотреть
invariance
Vlad а потом делаешь такое в контроллере своем function deleteUserCompanies(Request $request) { $request->user->company()->delete(); }
invariance
но потом вроде передалал на композицию как то
Andrey
Ясн. Ну мне как-то это не очень нравится, в middleware определять юзера да еще и в request его пихать
Vladislav
ясно, я сейчас в ступоре что у меня это мидла вообще нет
invariance
а у меня есть из коробки
invariance
удалил наверное?
Anonymous
А зачем делать $request->user = Auth::user(); почему просто сразу не использовать Auth::user()?